Windows 在C+中并行执行程序+/CLI

Windows 在C+中并行执行程序+/CLI,windows,c++-cli,command-line-interface,createprocess,Windows,C++ Cli,Command Line Interface,Createprocess,我正在编写一个windows窗体程序(C++/CLI),它在一个大的“for”循环中多次调用一个可执行程序。我想并行地调用可执行文件,因为运行一次需要一分钟的时间 windows窗体代码的关键部分是大for循环(实际上是2个循环): for(int a=0;a我已经使用OpenMP函数“parallel for”并行运行外部循环和函数omp_set_num_threads()实现了我想要的功能设置并发进程的数量。正如建议的那样,并发文件读取没有在我的系统上造成任何问题。这是否必须是一个单独的.e

我正在编写一个windows窗体程序(C++/CLI),它在一个大的“for”循环中多次调用一个可执行程序。我想并行地调用可执行文件,因为运行一次需要一分钟的时间

windows窗体代码的关键部分是大for循环(实际上是2个循环):


for(int a=0;a我已经使用OpenMP函数“parallel for”并行运行外部循环和函数omp_set_num_threads()实现了我想要的功能设置并发进程的数量。正如建议的那样,并发文件读取没有在我的系统上造成任何问题。

这是否必须是一个单独的.exe?如果控制解算器代码,如果是DLL,事情会变得容易得多。“解算器.exe的不同实例可能会读取并发文件,这会造成问题吗?”这取决于——如果它只是读取,那么只要您确保不以任何方式锁定文件就可以了。不管怎样,这是一个潜在的重复。看看这一点,看看它是否符合您的需要:脱离主题:使用
std::stringstream
std::stringstream startstr;startstr可以为您自己省去很多麻烦只是读而不是写。
for (int a=0; a<1000; a++){
   for (int b=0; b<100; b++){
       int run = a*100 + b;
       char startstr[50], configstr[50]; strcpy(startstr, "solver.exe");
       sprintf(configstr, " %d %d %d", run, a, b);
       strcat(startstr, configstr);
       CreateProcessA(NULL, startstr,......) ;
   }
}