Multithreading 忙等待和上下文切换

Multithreading 忙等待和上下文切换,multithreading,operating-system,multiprocessing,Multithreading,Operating System,Multiprocessing,如果我有两个进程,为什么忙等待可以避免上下文切换?在这种情况下,为什么上下文切换比浪费CPU时间便宜?如果存在线程而不是进程,会有什么变化 谢谢 为什么忙等待可以避免上下文切换 繁忙等待不会避免上下文切换!上下文切换是调度程序决定将CPU分配给其他进程运行的进程。忙等待是一种用于保持进程循环并等待某些内容的技术。i、 e.防止两个进程同时修改某些共享数据。一个进程将循环,直到另一个进程“告诉”他它已经完成。这是一种糟糕的同步方法,因为进程将其时间突发花在无所事事上,CPU利用率下降 为什么上下文

如果我有两个进程,为什么忙等待可以避免上下文切换?在这种情况下,为什么上下文切换比浪费CPU时间便宜?如果存在线程而不是进程,会有什么变化

谢谢

为什么忙等待可以避免上下文切换

繁忙等待不会避免上下文切换!上下文切换是调度程序决定将CPU分配给其他进程运行的进程。忙等待是一种用于保持进程循环并等待某些内容的技术。i、 e.防止两个进程同时修改某些共享数据。一个进程将循环,直到另一个进程“告诉”他它已经完成。这是一种糟糕的同步方法,因为进程将其时间突发花在无所事事上,CPU利用率下降

为什么上下文切换比浪费CPU时间便宜

视情况而定如果关键部分的代码很短,则忙等待可能比上下文切换快。一个进程可以忽略信号,并通过这种方式在CPU上运行,直到它自动给出信号为止注意并非所有信号都可以忽略

如果存在线程而不是进程,会有什么变化


我担心这太难回答,因为这可能取决于操作系统,如果操作系统知道线程。

我对您的answear只有一个问题,忙等待不是一种糟糕的同步方法,这取决于使用情况。有时,当事件不会花费太长时间时,最好使用忙等待而不是内核事件,因为内核对象会引入太多开销,如果您知道事件(或信号)将在很短的时间内发生,忙等待实际上是一种更好的方法,如果忙等待所花费的时间小于此开销,则在用户模式和内核模式之间切换可能是一种过度的操作。@EduG。我在回答中提到了这一点。有时,忙碌的等待可能比通过上下文切换要好。