我有一个大文件。这是一个文本文件,所以我一次读一行。
std::ifstream inFile( "big_file.txt" );
std::string line;
while( getline( inFile, line ) )
{
}
我想将从“big_file.txt”读取的行分发到多个文件。文件数取决于机器上可用的内核数。
编辑:目标文件可能在不同的物理设备上,或者内容可能发送到不同的机器
我(不成功)到目前为止的尝试如下
// list of writer objects each running in its own thread
std::vector<FileWriter> writers;
// create as many threads as there are cores
unsigned long const cores = boost::thread::hardware_concurrency();
for( unsigned long i = 0; i < cores; ++i)
{
std::ostringstream ss;
ss << i;
FileWriter rt(ss.str());
writers.push_back(rt);
}
然后正如我所说getline(inFile, line),
,我希望能够以循环方式将线路发送到线程。它真的不必是循环的。在线程之间分配工作的最佳方法是什么都可以。
我已经没有想法了。
请建议 boost 和 pre c++11 STL,因为我还没有完整的 c++11 环境。