【发布时间】:2018-12-25 22:58:09
【问题描述】:
假设我有一个从一个通道读取并写入另一个通道的 goroutine。
ch1 := make(chan int)
ch2 := make(chan int)
go func() {
for num := range ch1 {
ch2 <- num+1
}
}()
如果 ch2 被阻塞,goroutine 仍然会从 ch1 读取一个值,有效地在通道中引入一个 1 的缓冲区。由于我使用通道进行控制流,因此我不需要任何缓冲。
如何制作一个以完全锁步方式执行的管道? 或者换句话说,如何在一个原子操作中将值从一个通道传输到下一个通道?
我基本上想等待ch1 和ch2 到达集合点。
【问题讨论】: