【发布时间】:2018-01-26 00:30:04
【问题描述】:
我有以下管道:
parallel_pipeline(20,
make_filter<void,const char*>(
filter::serial,
[&](flow_control& fc)->const char*
{
getline(fe,orden_fichero);
if(fe.eof())
{
fc.stop(); // stop processing
return nullptr;
}
else
{
return orden_fichero.c_str();
}
}
) &
make_filter<const char*,void>(
filter::parallel,
[&](const char* p){
string orden(p);
}
)
);
之前,当我使用字符串而不是const char*,并且第一个返回是orden_fichero 而不转换为const char* 时,程序运行良好,但速度很慢。我已经看到使用const char* 可以提高程序的性能,但是这样在管道的第二阶段没有正确接收到某些行(某些行缺少字符)例如在10M lines 文件,26 行对应 orden 字符串,大小为 0,9 的大小在 2 到 35 之间,其余的都正确接收(order 变量有 36 个字符或更多)
如何从第一个管道中正确接收一个 const char* 来介绍第二个管道?
有一些方法可以读取英特尔 TBB 中的文件,以便在每一行上并行执行操作,并将结果以一种更好的方式保存在一个向量中,而不是我正在尝试的方式?
【问题讨论】:
标签: c++ string char ifstream tbb