2020-10-27:go中select的执行流程是什么?

福大大架构师每日一题 2020-10-27 07:35:39
2020-10-27:go中select的执行流程是什么?#福大大架构师每日一题#
...全文
2819 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
亦夜 2020-10-27
  • 打赏
  • 举报
回复
锁[i]定scase语句中所有的channel 按照随机顺序检测scase中的channel是否ready   如果case可读,则读取channel中数据,解锁所有的channel,然后返回(case index)   如果case可写,则将数据写入channel,解锁所有的channel,然后返回(case index)   所有case都未ready,则解锁所有的channel,然后返回(default index) 所有case都未ready,且没有default语句   将当前协程加入到所有channel的等待队列   当将协程转入阻塞,等待被唤醒 唤醒后返回channel对应的case index   如果是读操作,解锁所有的channel,然后返回(case index)   如果是写操作,解锁所有的channel,然后返回(case index)
KeepSayingNo 2020-10-27
  • 打赏
  • 举报
回复
select 不会按照任何规则或者优先级选择到达的channel。go标准库在每次访问的时候,都会将他们顺序打乱,也就是说不能保证任何顺序。所以是并行执行的。

50,503

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧