检查关闭的通道而不读取它们
在需要确定通道是否已关闭而不读取通道的情况下,有目前在 Go 中没有直接的方法可以做到这一点。 @Jimt 提供的代码示例作为工作人员和控制器模式的实际说明。但是,在工作人员退出后尝试从工作人员切片中删除工作人员通道时,它会遇到问题。
理解问题
直接从工作人员通道关闭当控制器尝试写入时,worker() 内的内容会导致恐慌,因为不允许写入关闭的通道。另一方面,使用互斥锁来防止并发访问会导致死锁,因为工作线程不会从通道读取数据,并且写入将被阻止。
潜在解决方案
结论
缺乏直接检查通道是否存在的机制在某些情况下,不读取而关闭被认为是一种限制。尽管存在解决方法,但它们可能不是最佳解决方案。检查关闭通道的函数的实现可能是 Go 编程语言未来版本的一个有价值的补充。
以上是如何在 Go 中检查通道是否关闭而不读取通道?的详细内容。更多信息请关注PHP中文网其他相关文章!