如何在不读取通道的情况下检查通道是否关闭?
在 Go 中使用通道时会出现这个问题,此时必须确定通道关闭而不阻塞。在提供的代码示例中,希望在相应的工作进程退出时从切片中删除通道。
问题
在worker() while 中关闭通道尝试在controller()中写入它会导致恐慌。使用互斥锁来保护此操作会导致死锁。为通道分配更大的缓冲区也不是一个可行的解决方案。
建议的解决方案
要解决此问题,建议worker() 在以下情况下关闭通道它退出了。然后,controller() 可以检查关闭的通道并跳过对它们的写入。然而,目前 Go 中没有内置函数可以在不读取通道的情况下检查通道关闭情况。
可能的解决方法
以上是如何在不读取 Go Channel 的情况下检查它是否已关闭?的详细内容。更多信息请关注PHP中文网其他相关文章!