工人在Matlab中断主程序?

时间:2013-08-22 13:47:57

标签: matlab parallel-processing interrupt

所以基本上我想做的是让我的主程序进行一些计算,与并行程序无关。并行程序不断检查某些事件是否成功,当它发生时,我希望主程序冻结并启动另一个并行作业。有可能在Matlab中这样做吗?

您可以将其想象为机器人骑行(主程序),同时检查其传感器数据(工作人员)。当它接近障碍物时,启动避开障碍物的程序。

提前谢谢,
Rugile:)

1 个答案:

答案 0 :(得分:2)

我见过的最佳解决方案是使用Matlab计时器对象。

实现代码看起来像这样:

%Setup timer
t = timer;
t.ExecutionMode = 'fixedSpacing';  %See `docsearch Timer Object Execution Modes` for explaination
t.Period = 1;  %Number of seconds after one execution to the start of the next
t.TimerFcn = @checkAndExecuteParallelJob
start(t);

%Start main job
mainJob();

在另一个档案中

function checkAndExecuteParallelJob
if (conditionIsFalse)
    %Fast return
    return;
end
%..Code to execute parallel job.  This will block the main execution

Matlab不是多线程的,因此执行定时器回调函数会中断并阻止任何主函数的执行。定时器也可以通过一系列复杂的规则相互中断,有时但并非总是如此,我曾试图对其进行逆向工程,但后来放弃了。但是,对于你提出的相对简单的问题,我认为计时器对象就足够了。