当我尝试使用 Google App Engine 的 Channel API 但从两个或多个 goroutine 和/或任务队列发送消息时会发生什么?例如
go channel.Send(context, clientID, "Hello")
go channel.Send(context, clientID, "World")
我知道在 GAE Go 中,所有的 goroutine 都被多路复用到一个线程上。但是,这仍然允许在 I/O 期间进行抢占,并且可能通道发送符合 I/O。
GAE 开发服务器似乎序列化了所有请求,所以我看不到任何通道发送重叠。生产服务器似乎允许一些请求并发,但通道发送看起来是原子的,或者至少可以安全地从不同的线程/goroutines 调用。