【MATLAB】并發(fā)模式下子函數(shù)判斷并發(fā)狀態(tài)的問題
背景
? ? 有個(gè)項(xiàng)目生產(chǎn),需要采用parfor來提高運(yùn)行速度,函數(shù)使用方式如下:
function 函數(shù)A()
parfor iii = 1 : 1000
? ? ? 函數(shù)Fcn(,,,,,,)? %?
end
end
? ??需要在"函數(shù)Fcn"中執(zhí)行某個(gè)操作,需要判斷是否處于并發(fā)狀態(tài)
異常描述
? 在"函數(shù)Fcn"中采用了gcp('nocreate')來判斷程序是否處于并發(fā)狀態(tài),采用for循環(huán)替換parfor測(cè)試的時(shí)候(處于并發(fā)模式下),"函數(shù)Fcn"可以有效判斷當(dāng)前處于并發(fā)狀態(tài);
? 但當(dāng)使用parfor時(shí),則"函數(shù)Fcn"一直按不并發(fā)來處理
解決方案
在parfor的函數(shù)結(jié)構(gòu)中,?僅能在“?函數(shù)A”中?gcp('nocreate')起作用;在"函數(shù)Fcn"則無法判斷是否處于并發(fā)狀態(tài),該句柄無效;
只能在"函數(shù)Fcn"增加字符開關(guān),由“?函數(shù)A”給"函數(shù)Fcn"傳遞某個(gè)變量,讓"函數(shù)Fcn"來判斷當(dāng)前是否處于并發(fā)狀態(tài)。
通過增加字符開關(guān)的方式,測(cè)試通過。
標(biāo)簽: