golang中怎样优雅的实现多个线程抢占一个任务,一个线程执行,其它等待执行完成这种模式
可以参考下groupcache中singleflight的实现
■网友
具体场景是?为什么其他失败任务要阻塞式等待第一个失败任务中的健康检查?那么只能假定之后的代码强依赖检查的结果?如果强依赖,你的代码是存在a任务失败,做完检查没问题,b任务失败,不做检查(而实际上此时做检查可能会失败哦)的竞态条件。任务和检查是两步不是原子的。个人建议根据具体场景要么就都做同步检查,要么就失败后走该走的逻辑,丢异步任务出去,在一个统一的地方做检查,并且做限制检查频率的处理。感觉这样代码清晰些。
推荐阅读
- 聪明人养花,这3种“花”怎样也要养一盆,每年能省不少医药费
- 互联网怎样解决“家政服务上门速度慢”的问题
- 怎样看待从1月8号起,QQ钱包开始提现收费
- 银行it人怎样转型
- 汽车|冬天怎样让车内温度快速升高?座椅加热的最佳使用方式二,外循环的作用总结
- 怎样进入通信行业
- 怎样评价扶他柠檬茶的小说《云养汉》的结尾
- 怎样成为一名合格的Python程序员?
- 怎样评价华为、诺基亚、中兴中标中国移动高端路由交换设备扩容集采
- 怎样评价类似前橙会、百老汇、南极圈这样类型的离职帮抱团,对企业的积极意义和消极意义
