1
A
回答
2
爲什麼忙等待避免上下文切換,
忙等待不避免上下文切換!上下文切換是調度程序決定讓CPU運行到其他進程的過程。忙碌的等待是一種技術,用於保持過程循環和等待某件事情。即防止兩個進程同時修改某些共享數據。一個進程將循環,直到另一個進程「告訴」他已完成。這是一種糟糕的同步方法,因爲CPU利用率下降,因爲進程花費時間突然無所事事。
爲什麼上下文切換是不是浪費CPU時間
DEPENDS更便宜!如果臨界區中的代碼很短,則繁忙的等待可能比上下文切換快。一個進程可以忽略信號,並通過這種方式運行在CPU上,直到它自動地將其釋放。 注意並非所有信號都可以忽略。
如果有線程而不是進程,會發生什麼變化?
恐怕這太回答了,因爲這可能取決於操作系統,如果操作系統知道線程。
相關問題
- 1. 可以等待的線程,再次喚醒上下文切換
- 2. 上下文切換線程正在等待
- 3. 睡眠/等待線程中的上下文切換
- 4. 忙等待在AWT
- 5. Spinlock vs忙等待
- 6. 用條件變量替換忙等待
- 7. 忙碌的等待和共享內存
- 8. 繁忙的等待線程
- 9. 正在忙着等待
- 10. 在C中忙於等待#
- 11. AS3等待/忙碌光標?
- 12. 如何解釋等待/異步同步上下文切換行爲
- 13. 線程上下文切換vs進程上下文切換
- 14. 上下文切換 - ucontext_t和makecontext()
- 15. 時間()和上下文切換
- 16. 上下文切換和內核模式
- 17. 線程和上下文切換C++
- 18. 等待時間通過,而不忙在C窗口等待
- 19. 上下文切換死鎖
- 20. 切換畫布上下文
- 21. Python:GIL上下文切換
- 22. 上下文切換太貴
- 23. PHP上下文切換
- 24. lpc 1769上下文切換
- 25. GPU上下文切換
- 26. 當按下切換目標C時顯示等待消息
- 27. 非忙等待的對象初始化
- 28. 調度任務與忙等待
- 29. 忙碌/等待光標在enthought traitsui
- 30. 避免在Access 2003中忙於等待
我只有一個問題與你的answear,忙等待不是一個糟糕的同步方法,這取決於用例。有時,當事件不需要太長時間時,最好使用繁忙的等待而不是內核事件,因爲內核對象引入的開銷太多,並且如果您知道事件(或信號)將在很短的時間內處於忙碌狀態實際上等待是一種更好的方法,如果在繁忙的等待中花費的時間小於這個開銷,那麼在用戶模式和內核模式之間切換可能會過度。 –
@EduG的確如此。我在我的回答中提到了它。有時候,忙碌的等待可能比通過上下文切換更好。 –