gpt4 book ai didi

c++ - CreateIoCompletionPort 的并发线程数

转载 作者:可可西里 更新时间:2023-11-01 13:54:59 25 4
gpt4 key购买 nike

关于 MSDN page for CreateIoCompletionPort这个函数的最后一个参数有一个非常简短的描述:

NumberOfConcurrentThreads [in]

The maximum number of threads that the operating system can allow to concurrently process I/O completion packets for the I/O completion port...

具体是什么意思?我对“并发”一词感到困惑——这听起来像是不同的线程处理相同的 I/O 数据包?而且,如果我从超过允许数量的线程中调用 GetQueuedCompletionStatus 会发生什么情况?

最佳答案

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

When the total number of runnable threads associated with the completion port reaches the concurrency value, the system blocks the execution of any subsequent threads associated with that completion port until the number of runnable threads drops below the concurrency value.

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

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

调用 GetQueuedCompletionStatus 的任何额外线程都将阻塞,即使有可用的完成也是如此。

关于c++ - CreateIoCompletionPort 的并发线程数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7016011/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com