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的确如此。我在我的回答中提到了它。有时候,忙碌的等待可能比通过上下文切换更好。 –