如果通道未缓冲,则匿名函数之一将不会返回。该程序泄漏了goroutine和通道。
如果通道的缓冲区大小大于或等于1,则两个匿名函数都将返回。goroutines和channel使用的资源将被回收。
缓冲区大小为1足以防止泄漏。该函数
waitForOneOfTwoProcesses接收发送到的值之一
c。发送到的第二个值
c在通道中缓冲(由GC收集)。
确保goroutines返回的另一种方法是使用非阻塞发送。将这些
c <- true行替换为:
select { case c <- true: default: }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)