Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Go 在同一共享通道上进行并发选择_Go_Concurrency - Fatal编程技术网

Go 在同一共享通道上进行并发选择

Go 在同一共享通道上进行并发选择,go,concurrency,Go,Concurrency,我在想,如果多个goroutine在一组通道上执行select,其中一个/一些通道在它们之间共享,并且当它们都在等待时,共享通道变为可用,会发生什么情况 运行时是否会处理这种情况,并且只允许一个goroutine访问通道并执行读/写操作?上面的注释会回答这个问题。您还可以编写一些代码并亲自查看。这些线路上的一些东西就是通道的点。如果不能同时使用它们,它们对同步就没有多大好处。使用它们进行同步与我在这里解释的场景不同。在我的场景中,两个goroutine试图同时从同一个通道读取数据,通过运行sel

我在想,如果多个goroutine在一组通道上执行
select
,其中一个/一些通道在它们之间共享,并且当它们都在等待时,共享通道变为可用,会发生什么情况


运行时是否会处理这种情况,并且只允许一个goroutine访问通道并执行读/写操作?

上面的注释会回答这个问题。您还可以编写一些代码并亲自查看。这些线路上的一些东西

就是通道的点。如果不能同时使用它们,它们对同步就没有多大好处。使用它们进行同步与我在这里解释的场景不同。在我的场景中,两个goroutine试图同时从同一个通道读取数据,通过运行
select
来主动等待。那个么,若该通道有一个新数据,运行时是否只允许一个goroutine读取该数据?并没有区别。通道是通信和同步原语,所有发送和接收都是同步点。是。请注意,您无法预测哪个goroutine将被解锁并继续。这是整个通道点。多个goroutine可以安全地从同一通道读/写。