2

現在、ハードディスク内のすべてのファイルを検索しようとしています。

ウィンドウ 7 で多くのドキュメントを検索します。これは、多くのファイル I/O を使用することを意味します...

マルチスレッドまたは非同期 I/O を使用する必要があると考えています。

どう思いますか?

4

1 に答える 1

0

正しく考えると、これはワーカー パイプラインに適しています。スレッド 1 は、ディレクトリのリストを使用して取得し、ディレクトリ リストを取得します。スレッド 2 はディレクトリ リストを消費し、追加のディレクトリをスレッド 1 にディスパッチし、ファイルをスレッド 3 に転送します。

一方、スレッド 3 には単純なジョブがあります。ファイルから一度に N ページのデータをフェッチし、一致するメモリ ページを検索するスレッド 4 にそれらを転送します。

アプリケーションは大部分が IO バウンドになるため、スレッド 3 にいくらかの CPU を投資してリクエストの同時実行性と優先度を最適化し、新しいページがスレッド 4 に配信される速度を最大化することを保証する余裕があります。プロセス全体が完了するまでの時間。

OTOH、メモリ マップド IOに切り替えるだけで、十分な速度で複雑さを軽減したソリューションが生成されることに気付くかもしれません。

于 2013-05-21T03:35:35.613 に答える