【发布时间】:2012-05-23 16:39:05
【问题描述】:
我正在为 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 函数相同的线程中运行良好。有什么问题?
【问题讨论】:
-
在下面查看我的答案。它回答了为什么不能在多个线程中使用
mex*函数的基本问题。但更大的问题是为什么你要这样做。为什么?您需要考虑以某种方式重新设计代码。 -
另见讨论here。
-
我将实现一个从服务器接收答案的matlab-client程序。所以这个过程必须是异步的,matlab客户端不应该等待一个答案来继续它的程序。
标签: multithreading matlab unix pthreads mex