我应该为 IOCP 创建多少线程?
Posted
技术标签:
【中文标题】我应该为 IOCP 创建多少线程?【英文标题】:How many threads I should create for IOCP? 【发布时间】:2015-03-04 02:30:06 【问题描述】:我读到传递给CreateIoCompletionPort()
函数的NumberOfConcurrentThreads
参数的理想数字是0
,这将转换为内核数。
但是,我应该实际创建多少个线程来等待完成端口,它是否也应该与内核数相同?
【问题讨论】:
如果你做了很多 other 等待(在完成端口以外的事情上)的时间很长,那么有额外的线程是有意义的,这样CPU可以充分利用。如果您从不等待完成端口以外的任何东西,那么 AFAIK 没有理由每个核心拥有多个。我认为您需要尝试为您的特定应用程序找到最佳平衡。 (当然对于许多现实世界的应用程序,一两个线程可以轻松处理所有流量。这取决于负载量。) 【参考方案1】:这个问题不可能用一个确定的数字来回答,因为这个数字取决于代码设计中的许多其他因素。诸如存在多少其他线程、此 IOCP 的线程工作多久导致它们阻塞、您实际拥有多少内核等因素。
我首选的方法是使线程数在外部可配置,以便您可以在代码工作后对其进行分析并调整线程数。
在许多设计和现代硬件中,我发现少量线程绰绰有余,而且这个数量通常远少于内核数量。
【讨论】:
以上是关于我应该为 IOCP 创建多少线程?的主要内容,如果未能解决你的问题,请参考以下文章