【发布时间】:2020-10-03 11:37:14
【问题描述】:
在 go 中工作和生成 protobuf 存根时,我偶然发现了这个有趣的问题。
每当我尝试按值复制消息的结构时,我都会收到以下警告:
调用 state.world.script.HandleEvent 复制锁值:throat/server/messages.PlayerDialogeStatus contains google.golang.org/protobuf/internal/impl.MessageState contains sync.Mutex copylocks
虽然我理解为什么按值复制互斥锁是错误的,但我开始想知道为什么他们一开始就在那里。
因此我的问题是:为什么 go 生成的 protobuf 文件包含放置在消息结构上的互斥锁,特别是在 MessageState 结构上?
或者:在生成的 protobuf 消息结构上找到的 MessageState 结构中放置互斥锁的目的是什么?
【问题讨论】:
标签: go protocol-buffers mutex