[英]std::this_thread::sleep_for - is context switch to this thread?
如果我在主函數std::this_thread::sleep_for(std::chrono::seconds(1))
調用,我創建了2個線程(使用std::thread
),並且我有1個cpu核心。
在這段時間內是否有任何上下文切換到主線程? 或者,也許只有1秒之后,上下文才會切換到主線程?
我不知道它是如何工作的...我認為有兩種可能性:
1)系統多次切換到主上下文,然后檢查時間是否結束並切換,不執行任何操作並切換到另一個線程2)系統中斷,時間結束時切換上下文
AFAIK它取決於操作系統的調度程序實現。 但是,當今的現代操作系統非常聰明,可以將明確要求臨時掛起的線程放在另一個隊列中,這樣就不會計划將其占用CPU。
所以,
在這段時間內是否有任何上下文切換到主線程?
沒有。
或者,也許只有1秒之后,上下文才會切換到主線程?
是的,在1秒或更長時間后。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.