Standalone Application Crash with infinite timer

HI,
i tried to create a standalone application with the code below. This code run in matlab ide, but when i start the .exe file created by application compiler tool this crash.
If i put a pause() function after parfeval() (into for) this crash after the execution of the pause function.
How can I solve the problem and what is it due to?
Thank you
delete(gcp('nocreate'));
p = parpool('local');
for i = 1:5
futures(i) = parfeval(@provatimer,0,i);
end
function provatimer(i)
tic
t = timer('TimerFcn',@(~,~)f('timer_parfeval_' + string(i)));
t.ExecutionMode = 'fixedspacing';
t.Period = 4;
start(t);
end
function f(i)
fileID = fopen( i + '.txt','at');
fprintf(fileID,'%f \n',toc);
fclose(fileID);
end

3 个评论

Post the error message.
As a sanity test, swap out provatimer with f (will need to write the fopen statement a bit different) in the call to parfeval to see if the compiled code runs without error.
The code run without error in Matlab, (writes endlessly in the files created) .
Using the file .exe this code crashes: files are created and the first value is written, after it crashes. I cant' post the .exe file but I create this with the Standalone Application tool of Matlab.
writing the code with pause(inf) :
for i = 1:5
futures(i) = parfeval(@provatimer,0,i);
end
pause(inf)
the code run also in .exe mode. This practise (use Pause(inf)) i don't think is correct.
Before terminate the execution on the Windows Command shell the last phrase is : parallel pool using the local profile is shutting down (this appear only when execute the same code using the file .exe) and then the process terminate.
Why is possible?
I also tried to use parpool('local', 'IdleTimeout',Inf)

请先登录,再进行评论。

回答(0 个)

类别

帮助中心File Exchange 中查找有关 Parallel Computing Fundamentals 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by