【发布时间】:2016-08-30 04:14:19
【问题描述】:
据我了解:当通道已满时,GO 中的缓冲通道不是 FIFO。
我的应用程序中需要这种行为(FIFO 行为)。
我怎样才能实现这种行为?有什么开源的吗?
在此先感谢
编辑:
有些人不喜欢这个问题,所以让我说得更清楚:
我的意思是当缓冲通道已满并且多个发送者被阻止时
在尝试将项目添加到频道时,它们将被释放的顺序
不是先进先出。你也可以阅读这个讨论:https://github.com/golang/go/issues/11506
是的,我一直在寻找实现该行为的第三方库。
抱歉没有说清楚。
【问题讨论】:
-
正如你刚才所说,这就是 Go 中通道的工作方式。您可以通过使用频道来实现这一点......对不起,但绝对是可怕的问题。
-
@evanmcdonnal 未指定在完整通道上阻止的发件人的执行顺序。问如何制作这个FIFO并不可怕。规范中没有任何内容表明您可以通过使用频道来实现这一点......问题的问题是它要求推荐一个软件包。
-
@KarrotKake 不,我认为它很清楚地说明了项目是按照发送顺序从频道中读取的,这意味着先进先出。
-
@evanmcdonnal 规范和内存模型文档没有说明发送时阻塞的 goroutines 的执行顺序。
-
我将问题编辑得更清楚。很抱歉从一开始就不是这样