Goroutines在通道上阻塞的顺序是否决定它们解除阻塞的顺序?我不关心发送的消息的顺序(它们保证是有序的),而是关心解除阻塞的Goroutines的顺序。假设有一个空通道`ch`,多个Goroutines(1、2和3)之间共享`ch`,每个Goroutine都试图从`ch`接收一条消息。由于`ch`是空的,每个Goroutine将被阻塞。当我向`ch`发送一条消息时,Goroutine 1会首先解除阻塞吗?还是2或3可能会先接收到第一条消息?(或者反之,Goroutines尝试发送)我有一个playground,看起来表明Goroutines阻塞的顺序就是它们解除阻塞的顺序,但我不确定这是否是因为实现而导致的未定义行为。
select
时更要谨慎。 - twotwotwoselect
可以在需要时使用并且知道如何进行公平选择也是一项有用的技能,这并不会有什么坏处。 - Rick-777