Gorilla WebSocket文档提到,“应用程序负责确保不超过一个goroutine并发调用write方法,并且不超过一个goroutine并发调用read方法。”
这是不是意味着没有两个goroutine,即使有不同的conn ptr可以同时调用write方法,或者这意味着如果我们与不同的goroutine共享相同的conn ptr,那么我们就不能用那个conn并发编写(尽管这似乎很明显)?
发布于 2020-08-22 20:58:36
每个连接支持一个并发读取器和一个并发写入器。
连接彼此独立,不共享任何状态。通常,应用程序中的所有连接都有一个对read方法的调用方。
文档解释说,连接支持的并发性比默认的无并发访问假设更多。
发布于 2020-08-22 19:53:51
只有一个goroutine有一个写锁,这是一个基本的并发控制要求。如果只有读锁,那么任何goroutine都可以并发读取。但是,当goroutine正在写入时,其他goroutine不应该读取或写入相同的值。如果允许,这种情况会产生许多不期望状态,例如脏读问题。所以你应该总是在写东西的时候使用互斥锁(写锁)。
https://stackoverflow.com/questions/63535716
复制相似问题