スレッドを 1 ~ 2 マイクロ秒中断する方法はありますか? (注 1 マイクロ秒 = 1/1000 ミリ秒)。この質問が聞かれたことは知っていますが、これまでのところ、これに対する良い答えはありません。これが必要な理由は次のとおりです。
クライアントのリクエストに対応するために複数のスレッドが実行されているサーバーがあります。要求は、時折発生する共有メモリを介して他のスレッドによって送信されます。ただし、リクエストが送信されたら、できるだけ早く処理する必要があります。そのため、リクエストが共有メモリでキューに入れられたときに、処理中のスレッドの 1 つに通知するための高速な方法が必要です。
Windows イベント オブジェクトが使用されましたが、マシンで SetEvent() から WaitForSingleObject() が返されるまでに 6 ~ 7us かかります (プロセス/スレッドの優先順位を設定しようとしましたが、まだあまり改善されていません)。ビジー ループを使用して、サービス スレッドがメモリをプールし続けるようにして、レイテンシを 1 ~ 2us に下げました。マイクロ/ナノ秒のスリープをループに挿入できれば、レイテンシを低く保ちながら、少なくとも CPU を解放できます。
2us 未満のレイテンシでスレッド通信を行う別の方法を誰かが提案してくれたらうれしいです。ありがとう