次のシナリオがあります
。プログラムには、外部アプリケーションであるソケットへのリーダー スレッドとライター スレッドがあります。リーダーとライターは、調整されたサイクルで作業する必要があります。
ライターは動的な数のメッセージ (x) をソケットに送信し、リーダーはソケットからの応答を読み取る必要があります。メッセージの数は、1 サイクルあたり 5 ~ 10k を超えます。メッセージは送信された順序と同じ順序で受信されるのではなく、メッセージは明確なレイアウトを持っているため、単一のメッセージを判別することができます。
リーダーは x 個のメッセージを読み取り、. ライターは、リーダーが読み取り後処理を行った後、ソケットへの送信を再開する必要があります。
あなたの視点からの最速の同期は何ですか?
- 書き込まれたメッセージの数で特別なメッセージをソケットに送信しますか? (ソケットには FIFO 保証はありませんが)
- 従来のロック オブジェクトを操作しますか?
書き込まれたメッセージの数を持つ整数にアトミック トランザクションを使用し、ライターが整数を 1 回だけ更新できるようにしますか?
他の高速同期メカニズムを見逃していませんか?