多くのワーカー スレッドを持つ C アプリケーションがあります。これらがブロックされないようにすることが不可欠です。そのため、ワーカー スレッドがディスク上のファイルに書き込む必要がある場合は、メモリ内の循環バッファーに書き込むようにし、そのバッファーをディスクに書き込むための専用スレッドを用意します。
ワーカー スレッドはブロックしなくなります。専用スレッドは、ワーカー スレッドに影響を与えることなく、ディスクへの書き込み中に安全にブロックできます (ディスクへの書き込み中にロックを保持しません)。メモリ バッファは、ライター スレッドが維持できる十分な大きさになるように調整されています。
これはすべてうまくいきます。私の質問は、標準出力に似たものをどのように実装するのですか?
printf() をマクロ化してメモリ バッファーに書き込むことはできますが、stdout に書き込む可能性のあるすべてのコードを制御することはできません (一部はサードパーティ ライブラリにあります)。
考え?ニックB