2

次のシナリオがあります
。プログラムには、外部アプリケーションであるソケットへのリーダー スレッドとライター スレッドがあります。リーダーとライターは、調整されたサイクルで作業する必要があります。
ライターは動的な数のメッセージ (x) をソケットに送信し、リーダーはソケットからの応答を読み取る必要があります。メッセージの数は、1 サイクルあたり 5 ~ 10k を超えます。メッセージは送信された順序と同じ順序で受信されるのではなく、メッセージは明確なレイアウトを持っているため、単一のメッセージを判別することができます。
リーダーは x 個のメッセージを読み取り、. ライターは、リーダーが読み取り後処理を行った後、ソケットへの送信を再開する必要があります。
あなたの視点からの最速の同期は何ですか?

  • 書き込まれたメッセージの数で特別なメッセージをソケットに送信しますか? (ソケットには FIFO 保証はありませんが)
  • 従来のロック オブジェクトを操作しますか?
  • 書き込まれたメッセージの数を持つ整数にアトミック トランザクションを使用し、ライターが整数を 1 回だけ更新できるようにしますか?

    他の高速同期メカニズムを見逃していませんか?

4

1 に答える 1

3

これを 1 秒あたり 100,000 回程度実行しない限り、どのメカニズムが別のメカニズムよりもマイクロ秒速いかは問題ではありません。最も理解しやすく、かつ/または機能しやすいメカニズムを使用してください。その後、十分に高速でないことが判明した場合にのみ、メカニズムの最適化を検討してください。おそらく、メッセージ処理自体は、この同期よりも桁違いに多くの時間を使用します。

于 2010-02-19T07:33:00.803 に答える