我正在寻找一种可靠的方法来确保 Go 中的空通道不会阻止我的执行。我必须以特定顺序(优先级的种类)遍历多个通道,一旦我找到其中包含项目的通道,请阅读其中的一个。
目前我以类似的方式做一些事情:
if len(myChannel) > 0 {
// Possible issue here: length could have changed to 0 making this blocking
elm := <- myChannel
return elm
}
从理论上讲,这可能会导致等待时间过长,而不同的频道可能有准备“服务”的项目。
有关如何改进的任何建议?我可以在通道中使用互斥锁,但感觉有更好的解决方案,尽管我不确定如何。
炎炎设计
相关分类