登录
首页 >  Golang >  Go问答

并发使用 gorilla websocket 包写入 JSON 数据

来源:stackoverflow

时间:2024-03-22 15:00:33 204浏览 收藏

在使用 Gorilla WebSocket 包进行并发写入时,必须注意,每个连接仅支持一个并发写入者。这意味着,即使有不同的连接指针,也不能同时调用多个 goroutine 的写入方法。这一限制旨在确保并发控制,防止多个 goroutine 同时写入相同的值,从而导致脏读等问题。

问题内容

Gorilla WebSocket 文档提到 “应用程序负责确保不超过 1 个 goroutine 同时调用写入方法,并且不超过 1 个 goroutine 并发调用读取方法。”

这是否意味着即使有不同的 conn ptr 也没有两个 goroutine 可以同时调用 write 方法,或者这意味着如果我们与不同的 goroutine 共享相同的 conn ptr 那么我们就不能同时使用该 conn 进行写入(这似乎很明显)。 ?

大猩猩文档链接


解决方案


每个连接支持一名并发读取者和一名并发写入者。

连接彼此独立且不共享状态。通常,应用程序中的所有连接都有一个读取方法的调用者。

文档解释说,连接比默认的无并发访问假设支持更多的并发性。

这是一项基本的并发控制要求,即只有一个 goroutine 具有写锁。如果只有读锁,那么任何 Goroutine 都可以并发读取。但是当一个 goroutine 正在写入时,其他 goroutine 不应该读取或写入相同的值。如果允许,这种情况会产生许多不良状态,例如脏读问题。因此,在并发写入内容时,您应该始终使用互斥锁获得独占锁(写锁)。

今天带大家了解了的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>