所以基本上我想做的是让我的主程序做一些计算,与并行程序无关。并行程序不断检查某个事件是否实现,当它实现时,我希望主程序冻结并开始另一个并行作业。在matlab中可以这样做吗?
你可以把它想象成一个骑着机器人(主程序),同时检查它的传感器数据(工人)。当它接近障碍物时,会启动一个避开障碍物的程序。
在此先感谢,
Rugile :)
问问题
186 次
1 回答
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 不是多线程的,所以定时器回调函数的执行会中断并阻塞任何主函数的执行。定时器也可以互相打断,有时但并非总是如此,我曾经试图逆向工程但后来放弃了一组复杂的规则。但是,对于您提出的相对简单的问题,我认为一个计时器对象就足够了。
于 2013-08-22T16:28:11.967 回答