目录

为什么 grpc message 不可直接值复制

目录

grpc 生成的 message 对应的 struct 在引用的时候尽可能使用指针,因为在生成的xxx.pb.go中的 Struct 内嵌了一个state(protoimpl.MessageState)该类型内部内置一个pragma.DoNotCopy(sync.Mutex),

所以我们在代码中如果需要复制 struct 对象的话:

1.值拷贝:使用pb.clone(x).(类型)

2.指针引用,如果不是不是指针引用的话,虽然代码不一定出错,但是很有可能出现死锁,因为锁是不可复制的

参考:go grpc proto message 如何进行深拷贝

版权声明

未经授权,禁止转载本文章。
如需转载请保留原文链接并注明出处。即视为默认获得授权。
未保留原文链接未注明出处或删除链接将视为侵权,必追究法律责任!

本文原文链接: https://fiveyoboy.com/articles/go-grpc-message-no-copy/

备用原文链接: https://blog.fiveyoboy.com/articles/go-grpc-message-no-copy/