私は、リモートマシンからメッセージを受信し、そのメッセージをディスク上のファイルに書き込む必要があるプログラムを作成しています。このプログラムの目的は、メッセージを受け取るライブラリのパフォーマンスをテストすることであるため、メッセージをディスクに書き込んでもライブラリのパフォーマンスに影響を与えないようにする必要があります。ライブラリは、コールバック関数を介してプログラムにメッセージを配信します。もう1つの難点は、ソリューションがプラットフォームに依存しないことです。ファイルにプラットフォーム非依存非同期書き込みを実装する方法は?
どのようなオプションがありますか?
私は、次の考え:ファイルへの非同期書き込みは、このライブラリのWindowsの特定の部分であること(thisマニュアルを参照してください)ファイルに書き込むboost:asio
を使用して
- が、それはそうです - ので、これをすることはできません中古。
boost::interprocess
を使用してメッセージキューを作成すると、this documentationは、メッセージを送信できる方法が3つあり、メッセージキューがいっぱいであればプログラムがブロックする(暗黙的にもそうでない)リスク。- を作成してコールバック関数から両端キューにプッシュし、ファイルへの書き込み中に別のスレッドにメッセージをポップしますが、STLコンテナはnot guaranteed to be thread-safeです。私はデッキへのプッシュとプッシュオフをロックすることができますが、連続したメッセージ間で約47マイクロ秒を話しているので、ロックを完全に避けたいと思います。
誰も解決策について考えていますか?
47マイクロメッセージですか?リモートマシンのリズムですか? –