1024-iot-SaltIce 2021-10-10 15:46 采纳率: 0%
浏览 7
已结题

关于#golang#的问题:如果select多个channel,有一个channel触发了,其他channel的waitlist需要不要主动去除?还是一直在那等着?

Q: 如果select多个channel,有一个channel触发了,其他channel的waitlist需要不要主动去除?还是一直在那等着?

A: waitlist 的出列是由 func (q *waitq) dequeue() *sudog 函数控制的,每个 sudog 携带了一个 selectDone 标志位,通过 cas 操作在每次 dequeue 的时候「惰性」去除队列中无效的元素

  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 10月18日
    • 修改了问题 10月10日
    • 创建了问题 10月10日