企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
select 结构组成主要是由 case 语句和执行的函数组成 是一种io多路复用机制, case结构 ~~~ type scase struct { c *hchan // chan 管道 elem unsafe.Pointer // data element 元素指针 } ~~~ ### **该函数执行逻辑大致如下:** 1. 锁定scase语句中所有的channel 2. 按照随机顺序检测scase中的channel是否ready   2.1 如果case可读,则读取channel中数据,解锁所有的channel,然后返回(case index)  2.2 如果case可写,则将数据写入channel,解锁所有的channel,然后返回(case index) 2.3 所有case都未ready,则解锁所有的channel,然后返回(default index) 3. 所有case都未ready,且没有default语句  3.1 将当前协程加入到所有channel的等待队列   3.2 当将协程转入阻塞,等待被唤醒 4. 唤醒后返回channel对应的case index 4.1 如果是读操作,解锁所有的channel,然后返回(case index)  4.2 如果是写操作,解锁所有的channel,然后返回(case index)