Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 其它 > 资料存档
资料存档 资料存档
 
 
主题工具 显示模式
旧 2019-12-10, 20:30   #1
poster
高级会员
 
注册日期: 2019-11-21
帖子: 3,006
声望力: 66
poster 正向着好的方向发展
帖子 从.net同时调用两个Matlab函数

我正在编写一个C#应用程序,我想同时(从不同的线程)调用不同的matlab函数。每个Matlab函数都位于其自己的已编译.net库中。看来我一次只能调用一个Matlab函数。

即,如果从线程1调用matlab_func1(),然后从线程2调用matlab_func2(),则matlab_func2()必须等待matlab_func1()完成执行。

有没有办法同时调用不同的matlab函数?谢谢。

MWArray[] DoKalmanFilter(double vel_x, double vel_y, double vel_z, double cal_x, double cal_y, double cal_z, bool doCal) { ...set up parameters ret = KalmanFilter.kalman_actual(6, velx, vely, velz, cal_x, cal_y, cal_z, return ret; } private void DoImageProcessing() { ..set up parameters MWArray[] ret = _imgProcessor.DoImageProcessing(2, rgbMarkerColor, hsvThreshold, angleDiffThreshold); }

回答:

我建议您在调用函数时,生成MATLAB(或嵌入到DLL中的MATLAB实时车间)并运行该函数。 C#和C之间的MATLAB接口可能具有一些全局外部变量,因此,在同一过程中可能无法两次生成MATLAB。而且,MATLAB本身在许多方面都是单线程的。他们正在努力使更多的人使用多核。

我以前使用过Java / Matlab接口,并在此站点上阅读以下内容:Matlab是单线程的。这意味着,如果您尝试从直接从Matlab函数调用的Java函数中进行eval或feval,它将挂起,等待第一个matlab函数终止。

作为测试,我可能建议将“ DoKalmanFilter”和“ DoImageProcessing”放入单独的程序集或应用程序中,然后创建一个产生两个新的单独应用程序的应用程序。这样,您可以获得两个进程,MATLAB将在每个进程中运行一次,从而使您能够同时运行函数。

如果可行,那么您可以开始考虑解决此问题的方法。您不希望必须一直生成应用程序并关闭它们。您可能需要在进程之间使用一些进程间通信来传递数据,这可能很难看:-)



更多&回答...
poster 当前离线   回复时引用此帖
 


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛禁用 表情符号
论坛启用 [IMG] 代码
论坛启用 HTML 代码



所有时间均为北京时间。现在的时间是 23:27


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.