我希望能够从输出文件中并行逐行阅读。每个线程读取一行,然后处理数据。同时,下一个线程必须读取下一行。
std::ifstream infile("test.txt");
std::mutex mtx;
void read(int id_thread){
while(infile.good()){
mtx.lock();
std::string sLine;
getline(infile, sLine);
std::cout << "Read by thread: " << id_thread;
std::cout << sLine << std::endl;
mtx.unlock();
}
}
void main(){
std::vector<std::thread> threads;
for(int i = 0; i < num; i++){
threads.push_back(std::thread(parallelFun, i));
}
for(auto& thread : threads){
thread.join();
}
return 0;
}
当我运行这段代码时,我得到了这个结果:第一个线程读取了所有行。如何让每个线程只读取一行? 编辑 如评论中所提到的,我只需要使用更大的测试文件。 谢谢大家!
infile.good()
移动到关键部分,并使用其结果更新一个bool
,该bool
用于while循环。 - didierc