簡體   English   中英

如何在C ++ Windows 10應用程序中訪問默認線程池?

[英]How to access the default thread pool in C++ windows 10 application?

根據這個SO問題:“為什么Windows 10會在我的程序中啟動額外的線程?” 和Hans Passant答案:Windows 10為Windows 10上的每個C ++進程啟動一個線程池(至少在VS2013 +中以c ++編譯時)。

根據Microsoft文檔“線程池”“線程池API(2018-05-30)” ,我找不到加入默認進程線程池的方法。

我可以加入默認的進程線程池嗎? ...還是我必須創建一個新的?

以下列出了每個進程有多個線程池的一些缺點:

  • 創建更多可以避免的線程
  • 更多睡眠線程
  • 更多的內存用於其他線程和管理器本身
  • 由於線程池之間可能並發,因此效率較低的線程管理算法。

如果我必須創建新的線程池,而不是每個進程加入/使用一個全局線程池,是否消除了每個進程只有一個線程池的優點? 為什么我們不能驗證是否已經創建了線程池並直接使用它? 為什么不僅僅能夠加入主流程主題庫? 僅像C#中那樣只有一個線程池會更好嗎?

旁注:我正在研究一種數學算法,該算法可以計算足夠長的時間來實現多線程。 此外,它也是第三方DLL的庫的一部分。 對於我來說,能夠加入一個已經創建的線程池比創建一個新的線程池更加合乎邏輯,並且可能會干擾客戶的主進程線程和另一個潛在的線程池。

在獲得Raymon Chen的良好回答和豐富信息之后,我發現了我喜歡分享的這篇文章,因為它可以幫助我更好地理解: 20個C ++多線程錯誤以及如何避免它們

std::async使用Windows上的默認線程池,因此您可能想使用它。

這里這里有更多細節。

暫無
暫無

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

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