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