簡體   English   中英

std::condition_variable::wait 是如何實現的?

[英]How is std::condition_variable::wait implemented?

我試圖在本地機器上的標准庫中搜索std::conidition_variable::wait是如何實現的,我可以看到wait_unitl但我找不到wait

我的問題是, wait函數是如何在內部實現的,如何使線程無限期地休眠,它是使用一些長時間的休眠還是操作系統特定的完全不同的東西?

謝謝!

搶占式多線程是一個主要由操作系統控制的進程。 它決定哪些線程獲得時間片和/或分配給哪些內核,等等。 因此,對於大多數低級線程原語(互斥體、條件變量等),真正的工作是在操作系統調用中完成的。

是的,理論上你可以實現類似條件變量的東西,只不過是原子訪問和定時線程暫停。 但是,它的性能會非常差。 現代操作系統知道線程何時等待某個條件,並且可以在滿足條件時“立即”喚醒該線程。 您的機制要求等待線程等待某個特定時間過去。

另外,您必須檢查一大堆虛假喚醒,因此無緣無故地使用線程時間。 基於操作系統的實現將少得多的虛假喚醒。

暫無
暫無

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

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