CreateIoCompletionPort 中的并发线程数

2023-12-20

On MSDN 页面CreateIoCompletionPort http://msdn.microsoft.com/en-us/library/aa363862%28v=VS.85%29.aspx该函数的最后一个参数有一个非常简短的描述:

并发线程数 [in]

操作系统允许的最大线程数 并发处理 I/O 完成数据包以实现 I/O 完成 港口...

它到底是什么意思?我对“并发”这个词感到困惑 - 这听起来像是不同的线程处理相同的 I/O 数据包?另外,如果我打电话会发生什么GetQueuedCompletionStatus来自超出允许数量的线程?


See http://msdn.microsoft.com/en-us/library/aa365198(v=VS.85).aspx http://msdn.microsoft.com/en-us/library/aa365198(v=VS.85).aspx

当与关联的可运行线程总数 完成端口达到并发值,系统阻塞 执行与该完成相关的任何后续线程 端口,直到可运行线程数低于并发数 价值。

其中“并发值”是NumberOfConcurrentThreads。 (还有更多好东西。)

除非您正在做一些不寻常的事情,否则 0 似乎是一个很好的传递值,其中并发值是核心数。然后,假设有足够的可用工作,您就可以让每个核心将完成结果从队列中拉出,而无需阻塞或上下文切换。

任何调用的额外线程GetQueuedCompletionStatus即使有可用的完成,也会阻塞。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CreateIoCompletionPort 中的并发线程数 的相关文章

随机推荐