busy waiting的替代方案是啥

callback,event,async/await,观察者模式,订阅消费模式。

■网友
yeild somethig 可破
■网友
异步回调/事件驱动,C# TPL(async/await)
■网友
取决于你的业务需求,至少可以分以下几种情况讨论
【busy waiting的替代方案是啥】 1)如果你是单线程程序,要做的就是要不断迭代,直到do something内部的某一行代码把condition设置为true。有不少经典算法都有类似的代码,并不见得不高效。
2)如果你是多线程程序,要做的是去等待某个外部条件的改变,那么你也有几种不同的方式
a) 如果你所等待的条件有希望在非常短的时间内完成(低于CPU做线程切换所带来的性能损失),那么仍然可以沿用这种Spin Wait的方式。因为其他的方式都会造成线程间切换,造成不必要的性能损失
b) 如果你所等待的条件可能需要比较长的时间才能完成,那么你可以使用Thread.Sleep或者yield等方式主动让出CPU,让其他线程执行,从而增加CPU的吞吐量
c) 你还可以借助各种IPC方式 ,例如Semaphore,Mutex等,具体用法可以去查询手册。注意此时可能造成的额外开销
d) 其他答案中所写的Callback,event也是很好的解决方法,但是可能你的代码需要一定的修改才能用上

■网友
callback chain


    推荐阅读