Matlab引擎API的线程安全性

Jer*_*emy 8 c++ matlab thread-safety matlab-engine

我通过反复试验发现MATLAB引擎函数不是完全线程安全的.

有谁知道规则?

通过反复试验发现:

在Windows上,与MATLAB的连接是通过COM进行的,因此COM Apartment线程规则适用.所有调用必须在同一个线程中进行,但只要每个连接都是隔离的,就可以在多个线程中进行多个连接.

从下面的答案来看,似乎在UNIX上不是这种情况,只要串行进行调用,就可以从多个线程进行调用.

Jac*_*cob 6

文档中,

MATLAB库不是线程安全的.如果您创建多线程应用程序,请确保只有一个线程访问引擎应用程序.


Ada*_*erg 3

当我第一次开始使用该引擎时,我没有遇到任何有关线程安全的文档,因此我认为它不是线程安全的。

我使用 C++ 类来同步对引擎实例的访问。对于更多并行处理设计,我实例化了引擎类的多个实例。

(编辑)我在 Solaris 上使用 MATLAB R14。我使用“engOpen”调用打开引擎,并使用“engClose”关闭它。当调用 Close 的线程与调用 Open 的线程不同时,我的平台不会崩溃。