App Engine Channel API的线程安全性/原子性

时间:2013-09-07 14:20:02

标签: multithreading google-app-engine thread-safety go channel-api

当我尝试使用Google App Engine的Channel API发送消息但是来自两个或多个goroutine和/或任务队列时会发生什么? e.g。

go channel.Send(context, clientID, "Hello")
go channel.Send(context, clientID, "World")

据我所知,在GAE Go中,所有goroutine都被复用到一个线程上。但是,这仍然允许在I / O期间进行抢占,并且可能通道发送符合I / O.

GAE开发服务器似乎序列化所有请求,因此我看不到任何通道发送重叠。生产服务器似乎允许一些请求并发,但通道发送似乎是原子的,或者至少可以安全地从不同的线程/ goroutine调用。

1 个答案:

答案 0 :(得分:0)

通常,App Engine API调用可以并发调用,只要它们不会写入相同的内存(例如两个数据存储区。使用相同目标结构的调用不安全)。