this tutorialによると、非同期ディスクファイルioは、少なくともプログラミング/ apiの観点から、LinuxのAIOを使って簡単に達成できます。しかし、このチュートリアルの前と後で、私はこれを行うことができない、またはパッチや他の多くの問題でlibeventを使うべきであるという多くの記事と記事を読んでいました。もう一つはループを待っていたはずですが、このチュートリアルに基づいてコールバック・メカニズムを使用することができます。これは明らかにAIOの使用をはるかに容易にします。LinuxディスクファイルAIO
私はLinuxのプログラマーではありませんが、Linuxで非同期ディスクファイルioをサポートするための簡単な方法を探していました。それを学び、それを非同期ディスクioライブラリに追加しました。個人的なプロジェクト。現在、Windows以外のプラットフォームでは、WindowsとI/Oワーカースレッドでオーバーラップしたioを使用しています。 mutithreadedソリューションは扱いにくいかもしれないので、私はLinux上でAIOに置き換えたいと思っていました。
だから、このチュートリアルで説明しているAIOの問題は何ですか?それはパフォーマンスですか? AIOを使用して実行できる操作に制限はありますか?
p.s.主要なLinuxディストリビューションで動作する限り、コードが他のPOSIX準拠のプラットフォームに移植できないかどうかは気にしません。私が気にするのは、通常のディスクファイルioです。
ありがとうございました。
LinuxでのAIOサポートが不良です。現在、AIOはバッファ・キャッシュをバイパスし、ディスクIOを直接実行します。これはパフォーマンスをひどく損なう可能性があります。 – lvella
ワーカースレッドソリューションより悪化する可能性がありますか? – p00ya00
あなたの使用状況によって異なります。大きなファイルを順番に読み書きするだけなら、それはうまくいくでしょうが、小さなチャンクにランダムにアクセスすると、それは確かに悪くなります。ちなみに、このworker-threadソリューションは、POSIXインタフェース 'aio_read()'などを使用する場合に得られるものです。glibcによってユーザ空間上のスレッドをブロックすることで実装されています。 – lvella