我正在尝试使用boost::thread
并行地在command line
上运行bash脚本。
bash脚本将args值写入日志文件。
for (unsigned int i = 0; i < count; i++) {
std::string nIndexLine = nIndex[i].line;
boost::thread z(CommandLineRun, nIndexLine);
}
void CommandLineRun(const std::string& Command)
{
int systemRet = system(Command.c_str());
if(systemRet == -1){
// The system method failed
}
}
上面的代码有效,但我在same entries multiple times
中看到了log file
。 。例如。如果nIndex
有500 values
,那么nIndex[0]
的值会在log file
中写入500次。
所以imho for循环不会遍历所有条目。但如果我删除boost::thread
,那么for循环正在按预期工作。
我做错了什么?
我不想从命令行输出任何内容,我只是希望它在命令行上运行命令。并且不要再烦恼了。
更新:结果
boost::raplce_all
导致问题。它就在boost::thread
答案 0 :(得分:1)
您的image(var.y)
函数接收对可能已更改的字符串的引用,甚至在实际调用该函数时消失。
你应该试试这个:
CommandLineRun()