【发布时间】:2015-03-25 21:52:00
【问题描述】:
假设我有一个缓冲的发送和非缓冲的接收通道:
s := make(chan<- int, 5)
r := make(<-chan int)
是否可以在两者上都使用select,这样r 如果有要阅读的内容就会被选中,而s 如果没有读满就会被选中?与此等价的东西,但不使用 100% CPU:
for {
if len(s) < cap(s) {
// Send something
}
if len(r) > 0 {
// Receive something
}
}
请注意,我想在发送时决定发送什么,而不是更早。
编辑
这个问题基本上相当于“我可以阻塞直到一个频道准备好发送,而不发送任何东西?”
【问题讨论】: