は、私は、次のいるProtobufのmsgが定義されています:ビルダーとしてのスレッドR
とW
の間で共有されるJavaのprotobufはスレッドセーフですか?
message Counts {
repeated int32 counts = 1;
}
:
private final Counts.Builder countsBuilder;
スレッドがR
のみcountsBuilder
から読み込まれますとW
だけcountsBuilder
に書き込みます。 共有ビルダーは、ネットワークを介して送信され、書き込まれ、(ある時点で)&がビルドされます。
AFAIKでは、メッセージへの同時読み取りは問題ありませんが、他のものは開発者がより高いレベルで同期する必要がありますか?だから、私は実際に共有ビルダーに同時に書き込んだり読んだりできません。
これは本質的にスレッドセーフではない場合は、スレッドセーフであるCollection<Integer>
を使用して読み書きすることを考えています。送信する前に新しいメッセージを作成しますそれはネットワークを介して。または私は何かを逃している?
ありがとうございます!
EDIT 1:一部の用語やスペルの修正:私はいるProtobuf 2.4.1およびJava 6
EDIT 2を使用しています。
「共有メッセージへの書き込み」をどのように提案しますか?メッセージは不変です。ビルダー*に書き込む必要があります。 –
おっと、私は間違った用語を使用したと思います。私はビルダーに書いて、送信時にメッセージに変換します。 – Howie