我定义了以下 protobuf msg:
message Counts {
repeated int32 counts = 1;
}
它在线程之间R
和W
作为构建器共享:
private final Counts.Builder countsBuilder;
线程R
只会读取countsBuilder
并且W
只会写入countsBuilder
. 共享构建器将通过网络被读取、写入和(在某些时候)构建和发送。
AFAIK,对消息的并发读取很好,但是开发人员必须在更高级别同步其他任何内容?那么,我实际上不能同时写入和读取共享构建器吗?
如果这本质上不是线程安全的,我正在考虑使用某种线程安全的Collection<Integer>
,我将使用它来读取/写入,并将(在某些时候)在通过网络发送之前创建一个全新的消息。还是我错过了什么?
谢谢!
编辑 1:我正在使用 protobuf 2.4.1 和 java 6
编辑 2:一些术语和拼写修复。