我目前正在尝试搜索硬盘中的所有文件。
我将在窗口 7 上搜索大量文档。这意味着使用大量文件 I/O...
我在想我应该使用多线程或异步 I/O。
你怎么看?
我目前正在尝试搜索硬盘中的所有文件。
我将在窗口 7 上搜索大量文档。这意味着使用大量文件 I/O...
我在想我应该使用多线程或异步 I/O。
你怎么看?
如果您以正确的方式考虑它,这可以很好地适用于工作管道:线程 1 使用目录列表来检索和获取目录列表。线程 2 使用目录列表并将其他目录分派回线程 1,同时将文件转发到线程 3。
与此同时,线程 3 有一个简单的工作:一次从文件中获取 N 页数据并将它们转发到线程 4,线程 4 在内存页面中搜索匹配项。
由于应用程序主要受 IO 限制,因此您可以轻松地在线程 3 中投入一些 CPU 以优化请求的并发性和优先级,以尝试确保最大化将新页面传递到线程 4 的速度,从而整个过程完成的速度。
OTOH,您可能会发现仅切换到内存映射 IO会产生一个不太复杂且速度足够快的解决方案。