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
推荐阅读
- 有啥搜索引擎可以替代Google(外语)
- 奥迪|豪华紧凑SUV降价幅度提升,95后到下手的时候了么?舒适派:雷克萨斯UX下位替代:丰田C-HR颜值控:沃尔沃XC40下位替代:领克05氛围控:奥迪Q3下位替
- 38号车评中心|不用盘刹和空气悬架,完美替代仓栅挂车,这款侧帘挂车亮点十足
- 普通车|全新本田锋范两厢版实车亮相,率先登陆泰国市场,替代飞度!
- 趣头条|飞度替代车型? 比飞度大比思域小的两厢车 本田city亮相
- 虚拟现实能替代现实吗
- MFC能用其他语言来替代吗?
- 随着人工智能的发展,有哪些行业不会被替代
- 汽车|【IPO前哨】LNG替代进行时,致远新能源静待飞跃!
- e公司|太火了!世界销量一半在中国,全球资产都在押宝新能源车!4000亿蔚来,3万亿特斯拉!全面替代还有多久?
