2

我目前正在尝试搜索硬盘中的所有文件。

我将在窗口 7 上搜索大量文档。这意味着使用大量文件 I/O...

我在想我应该使用多线程或异步 I/O。

你怎么看?

4

1 回答 1

0

如果您以正确的方式考虑它,这可以很好地适用于工作管道:线程 1 使用目录列表来检索和获取目录列表。线程 2 使用目录列表并将其他目录分派回线程 1,同时将文件转发到线程 3。

与此同时,线程 3 有一个简单的工作:一次从文件中获取 N 页数据并将它们转发到线程 4,线程 4 在内存页面中搜索匹配项。

由于应用程序主要受 IO 限制,因此您可以轻松地在线程 3 中投入一些 CPU 以优化请求的并发性和优先级,以尝试确保最大化将新页面传递到线程 4 的速度,从而整个过程完成的速度。

OTOH,您可能会发现仅切换到内存映射 IO会产生一个不太复杂且速度足够快的解决方案。

于 2013-05-21T03:35:35.613 回答