如何从另一个线程调用mexCallMATLAB

时间:2012-05-23 16:39:05

标签: multithreading matlab unix pthreads mex

我正在为mex编译的MATLAB创建一个C ++模块。我在这个模块中启动一个新线程并从中调用matlab函数myCallback:

mxArray *funcName = mxCreateString("myCallback");
mxArray *text - mxCreateString("AAA");
mxArray *call[2] = {funcName, text};
mexCallMATLAB(0, NULL, 2, call, "feval");
...

myCallback函数:

function myCallback(text)
fprintf(1,'%s\n', text);
end

调用mexCallMATLAB后它不会打印任何内容。这些函数在与matlab函数相同的线程中运行良好。有什么问题?

1 个答案:

答案 0 :(得分:2)

here

基本上,答案是mex*函数线程安全。这包括mexCallMATLABmexPrintf和朋友(是的,甚至不应该从多个线程调用mexPrintf)。所有mexCallMATLAB调用都必须从主线程完成(即与MATLAB本身执行的执行线程相同)。