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