我在网上找到了这本书:约瑟夫·阿尔巴哈里写的“Threading in C#”。我试过它的例子:
class ThreadTest
{
static void Main()
{
Thread t = new Thread(WriteY); // Kick off a new thread
t.Start(); // running WriteY()
// Simultaneously, do something on the main thread.
for (int i = 0; i < 10000000; i++) Console.Write("x");
Console.ReadLine();
}
static void WriteY()
{
for (int i = 0; i < 10000000; i++) Console.Write("y");
}
}问题是,当我运行这个程序时(我在for循环中给出了更高的值来观察),我的CPU利用率一直保持在100%。我不想这样,我的意思是,有没有办法减少这个程序的CPU消耗?我刚开始接触多线程的概念,所以我想我应该提前问一下。
发布于 2011-12-19 20:29:01
如果您可以同时使用多个资源,多线程可以改进您的应用程序。例如,如果你有多个核心或多个CPU,我相信上面的例子应该表现得更好。
或者,如果您有一个使用CPU的线程,而另一个线程同时使用磁盘,那么如果您使用多线程,它的性能也会更好。
但是,如果您只有一个CPU或一个内核,那么上面的示例不会有更好的性能。它的表现会更糟。
发布于 2011-12-19 20:29:10
没有办法降低使用率,因为您正在使用两个线程(最有可能在双核上),这两个线程都是工作密集型的(它们循环和打印一些东西)。也许降低线程优先级会有所帮助,但我认为这不是本例的意义所在。
发布于 2011-12-19 20:29:24
WriteY函数中的循环将尽可能快地执行。所以它将使用100%的CPU。如果你想减少资源消耗,你可以做两件事:
static void WriteY() { for (int i= 0;i< 10000000;i++) { Console.Write("y");Thread.Sleep(100);} }
https://stackoverflow.com/questions/8561325
复制相似问题