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



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

如果您的工作项从不阻塞,则使用threads = cores。如果您的线程永远不需要重新调度,您可以通过每个内核创建一个线程来最大化所有内核。

如果你的工作项有时阻塞(如果你想最好地利用IOCP,它们不应该做太多),你需要更多的线程。你需要测量有多少。

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

一些对你有用的wiki页面:

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

最新更新