単一の実行パスでこれを簡単に実行できるとは思いません。ディスクへの書き込みを保証するには fsync が必要です。これは書き込みを待つ必要があります。
書き込みタスクを別のスレッドまたはプロセスに委譲することで、これを行うことは可能だと思います (ただし、簡単ではありません)。既存のプログラムでデータを生成し、適切と思われる方法を使用して 2 番目のスレッド/プロセスに「書き込み」ます。これはノンブロッキングにすることができます。2 番目のスレッドは、新しいデータをコンテンツ ファイルに書き込み、次に fsync に書き込み、次にインデックス ファイルに書き込み、新しいデータを再度チェックします。重要な設計上の決定事項は、2 つの実行パスを分離する方法、それらの間の通信方法、およびライトバックをメイン プログラムに報告する必要があるかどうかに関連しています。これにはまだレイテンシーとスループットの問題がある可能性がありますが、それはインデックス ファイルとコンテンツ ファイルを同期させることを選択した場合のコストの一部です。少なくとも、ディスクで待機している間に作業を完了できる可能性があります。
これが適切にカプセル化されているかどうかを調べて、トランザクション データベースのソースで役立つかどうかを確認する価値があります。コンテンツ ファイルのファイル システムをマウントするときに、同期オプションを調査することもできます。