线程数与处理器核心数之间的关系是什么?

时间:2014-07-09 14:27:42

标签: windows multithreading threadpool iocp

我正在编写一个基于线程池(IOCP)的服务器应用程序。但我不知道有多少线程是合适的。线程号是否与处理器核心数相关联?

2 个答案:

答案 0 :(得分:2)

如果您的工作项永远不会阻止,请使用threads = cores。如果您的线程永远不需要被计划,您可以通过为每个核心创建一个线程来最大化所有核心。

如果您的工作项有时会阻止(如果您想充分利用IOCP,他们不应该做很多事情),您需要更多的线程。你需要测量多少。

答案 1 :(得分:0)

多个线程组成一个进程,线程数不依赖于核心数。单核处理器可以使用各种调度方案来处理多线程进程。也就是说,如果处理器上有多个内核,则可以同时运行不同的线程。因此,要同时运行多个线程,您需要多个核心,但要运行多个线程,但不一定同时运行(虽然看起来可以同时),但您可以通过实施调度系统来使用单个核心。

一些有用的维基页面:

http://en.wikipedia.org/wiki/Computer_multitasking

http://en.wikipedia.org/wiki/Thread_%28computing%29

http://en.wikipedia.org/wiki/Input/output_completion_port

http://en.wikipedia.org/wiki/Scheduling_%28computing%29

http://en.wikipedia.org/wiki/Thread_pool_pattern