在运行时使用变量交换链接Linux中的2个C ++程序

时间:2016-09-01 14:38:52

标签: c++ concurrency interface wrapper data-exchange

我有两个用C ++编写的独立程序,现在必须在运行时通过某种接口进行耦合。我尝试使用伪代码在下面绘制草图:

program1.cpp:

program1(){
   initializeProgram1();

   for (i = 0; i < nIterations; i ++){
        A = veryComplexParallelCalculation();
        postProcessAndOutput(A);
   }

   finishProgram1();
}
program2.cpp:

program2(){
   prepareProgram2();
   for (i = 0; i < nIterations; i ++){
        B = evenMoreComplexParallelCalculation();
        OutputAndPostProcess(B);
   }

   finishProgram2();

}

我们需要在program1.cpp中的循环中添加另一个函数,该函数在运行时期间使用program2.cpp的结果与迭代i的相同值。例如,两个程序的修改循环如下所示:

for (i = 0; i < nIterations; i ++){
        A = veryComplexParallelCalculation();
        postProcessAndOutput(A);

        //iB is the iteration number from program2
        getBfromProgram2(B, iB);
        if (iB == i )
            C = foo(A ,B);

}

program2.cpp中,它会像

   for (i = 0; i < nIterations; i ++){
        B = evenMoreComplexParallelCalculation();
        OutputAndPostProcess(B);

        //send data and iteration number to program1
        sendBtoProgram1(B, i);

        doSomeOtherStuff();
   }

所以我想知道是否有可能在program2的运行时期间捕获变量B并将其发送到program1。注意,两个程序是两个无法合并的巨大项目!

或许可以使用某种接口或包装器(某种程序间的MPI_Send / Recv :)?我也在考虑i / o到/来自文件。我会赞成任何有关它的想法。

0 个答案:

没有答案