我想用不同的参数同时运行程序。为此,我用C ++编写了另一个程序。
我使用此代码执行线程:
future<double> fut[REPEAT];
for (int j = 0; j < REPEAT; j++) {
fut[j] = async(launch::async, executerCallerTask, currentWeight, j);
}
当executerCallerTask调用类
时double executerCallerTask(double currentWeight, int threadNo){
cout << "a new thread started!!!!" << endl << endl << endl;
anExecuter instance(currentWeight, ITERATIONS, threadNo);
double var1 = instance.getVar1();
return var1;
}
该类基本上运行具有给定参数的程序
anExecuter::anExecuter(double currentWeight, int iterations, int threadNo){
char commandString[120];
snprintf(commandString,120,"cd /Program Directory/; ./program %f %d",currentWeight, iterations);
system(commandString);
}
这里的问题是具有不同参数的程序一个接一个地运行,而不是同时运行。我还尝试使用thread(executerCallerTask, currentWeight, j);
替代解决方案,但无法使其工作。
我感谢任何帮助。提前谢谢!
在Orbit的警告中进行Lightness Races后,我设置了断点并看到线程有效,直到它出现在system(commandString);
行。我认为等待是因为system
仅适用于一个终端并逐个调用命令。所以代码可能没什么问题。