現在、ハードディスク内のすべてのファイルを検索しようとしています。
ウィンドウ 7 で多くのドキュメントを検索します。これは、多くのファイル I/O を使用することを意味します...
マルチスレッドまたは非同期 I/O を使用する必要があると考えています。
どう思いますか?
現在、ハードディスク内のすべてのファイルを検索しようとしています。
ウィンドウ 7 で多くのドキュメントを検索します。これは、多くのファイル I/O を使用することを意味します...
マルチスレッドまたは非同期 I/O を使用する必要があると考えています。
どう思いますか?
正しく考えると、これはワーカー パイプラインに適しています。スレッド 1 は、ディレクトリのリストを使用して取得し、ディレクトリ リストを取得します。スレッド 2 はディレクトリ リストを消費し、追加のディレクトリをスレッド 1 にディスパッチし、ファイルをスレッド 3 に転送します。
一方、スレッド 3 には単純なジョブがあります。ファイルから一度に N ページのデータをフェッチし、一致するメモリ ページを検索するスレッド 4 にそれらを転送します。
アプリケーションは大部分が IO バウンドになるため、スレッド 3 にいくらかの CPU を投資してリクエストの同時実行性と優先度を最適化し、新しいページがスレッド 4 に配信される速度を最大化することを保証する余裕があります。プロセス全体が完了するまでの時間。
OTOH、メモリ マップド IOに切り替えるだけで、十分な速度で複雑さを軽減したソリューションが生成されることに気付くかもしれません。