【发布时间】:2011-08-20 12:45:36
【问题描述】:
我有一个处理大量(相对较小)文件的小型应用程序。它按顺序运行:它从文件加载数据,对其执行操作,然后移动到下一个文件。 我注意到在运行期间,CPU 使用率并不是 100%,我猜这是由于硬盘驱动器上的 I/O 操作所花费的时间。
因此,我们的想法是使用单独的线程将下一个数据加载到内存中,与当前数据的处理并行(所讨论的数据只是一个 int 序列,存储在一个向量中)。这似乎是一个非常普遍的问题,但我很难找到一个简单、普通的 C++ 示例来做到这一点! 现在 C++0x 即将推出,使用新线程工具的简单演示代码,无需外部库,会非常好。
另外,虽然我知道这取决于很多事情,但是否有可能对这种方法的好处(或挫折)进行有根据的猜测,例如要加载的数据文件的大小?我猜对于大文件,磁盘 I/O 操作无论如何都很少,因为数据已经被缓冲(使用 fstream(?))
奥利维尔
【问题讨论】:
标签: c++ multithreading c++11