【问题标题】:Thread Pool and it thread provide线程池及其线程提供
【发布时间】:2013-11-25 21:18:19
【问题描述】:

我的代码是

static void Main(string[] args)
{
    for (int i = 0; i < 100; i++)
    { 
        ThreadPool.QueueUserWorkItem(y => 
        { 
            Console.WriteLine(Thread.CurrentThread.ManagedThreadId);
            Thread.Sleep(3000);
        }); 
    }
    Console.Read();
}

当我启动程序并查看 sos.dll 时,我可以看到每次线程池都为我提供 4-5 个线程。由于池不提供更多线程,因此发生延迟。 为什么会这样?

【问题讨论】:

  • 你的机器有几个核心?
  • 除非您有 8 个或更多内核,否则 4 - 5 可能还不错,不会颠簸?另外,你读过documentaion吗?

标签: c# threadpool


【解决方案1】:

ThreadPool Class:

每个进程有一个线程池。从 .NET Framework 4 开始,进程的线程池的默认大小取决于几个因素,例如虚拟地址空间的大小。进程可以调用 GetMaxThreads 方法来确定线程数。 可以使用SetMaxThreads方法更改线程池中的线程数。每个线程使用默认堆栈大小,并以默认优先级运行。

另外说明,根据系统资源(如 CPU 内核、RAM 等),更多线程可能不会让您的应用程序运行得更快。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-30
    • 2013-08-05
    • 1970-01-01
    • 2010-09-18
    • 1970-01-01
    • 2018-10-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多