C++和Mathematica之间的IPC通信?

3

我正在使用C++编写一个程序,在其中需要执行一个非常复杂的积分计算,我认为采用数值逼近方法将会很困难和低效。

我的想法是通过fork()生成一个子进程,并让该进程启动一个Mathematica内核来计算积分。(脚本将预先定义变量并作为命令行参数传入)。

目前我只知道的方法就是使用Mathematica将积分的最终值写入文件,然后让父进程轮询(查找文件是否已经写入),等待文件完成后再读取文件中的值。

有没有更有效率的方法呢?我知道向文件中写入数据并轮询会带来很多开销,但我不知道如何与Mathematica发送/接收信号。是否可以在Mathematica和我的程序之间打开一个共享内存区域,使得数值可以被写入该内存区域而不是由两个进程读写文件?

如果您有任何其他想法或加速此技术的方法,都将不胜感激。


1
请参考我的相关问题这里,了解如何使用C++扩展Mathematica内核。有关MathLink的答案也可能对您的(反向)应用程序有用。 - Szabolcs
谢谢,我一定会认真阅读的。昨晚我尝试了一下 MathLink,感觉非常混乱。但我会继续学习它,因为它似乎正是我所需要的。 - drjrm3
1个回答

3
你可以利用 MathLink 与 Mathematica 进行交互。或者,你可以将 Mathematica 库嵌入你的应用程序中进行计算。
这些选项在此处进行了介绍,并具体参考了 此处的 MathLink。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接