【MATLAB】并发模式下子函数判断并发状态的问题
背景
有个项目生产,需要采用parfor来提高运行速度,函数使用方式如下:
function 函数A()
parfor iii = 1 : 1000
函数Fcn(,,,,,,) %
end
end
需要在"函数Fcn"中执行某个操作,需要判断是否处于并发状态
异常描述
在"函数Fcn"中采用了gcp('nocreate')来判断程序是否处于并发状态,采用for循环替换parfor测试的时候(处于并发模式下),"函数Fcn"可以有效判断当前处于并发状态;
但当使用parfor时,则"函数Fcn"一直按不并发来处理
解决方案
在parfor的函数结构中, 仅能在“ 函数A”中 gcp('nocreate')起作用;在"函数Fcn"则无法判断是否处于并发状态,该句柄无效;
只能在"函数Fcn"增加字符开关,由“ 函数A”给"函数Fcn"传递某个变量,让"函数Fcn"来判断当前是否处于并发状态。
通过增加字符开关的方式,测试通过。