簡體   English   中英

CreateIoCompletionPort 中的並發線程數

[英]Number of Concurrent Threads in CreateIoCompletionPort

CreateIoCompletionPort的 MSDN 頁面上,對此 function 的最后一個參數有一個非常簡短的描述:

NumberOfConcurrentThreads [in]

操作系統允許並發處理 I/O 完成端口的 I/O 完成數據包的最大線程數...

它到底是什么意思? 我對“並發”這個詞感到困惑——這聽起來像是不同的線程處理同一個 I/O 數據包? 而且,如果我從超過允許的線程數中調用GetQueuedCompletionStatus會發生什么?

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

當與完成端口關聯的可運行線程的總數達到並發值時,系統會阻止與該完成端口關聯的任何后續線程的執行,直到可運行線程的數量降至並發值以下。

其中“並發值”是NumberOfConcurrentThreads (還有更多好東西。)

除非您正在做一些不尋常的事情,否則 0 似乎是一個很好的傳遞值,其中並發值是核心數。 然后,假設有足夠的可用工作,您可以讓每個核心從隊列中提取完成結果,而無需阻塞或上下文切換。

任何調用GetQueuedCompletionStatus的額外線程都將阻塞,即使有可用的完成。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM