Matlab计时器不是异步执行的

时间:2017-03-29 17:32:49

标签: multithreading matlab user-interface asynchronous

我正在开发一个Matlab UI程序,按下按钮的回调可能需要很长时间才能处理。所以我基本上希望回调是异步执行的,并要求UI在准备就绪时更新回调结果。

有些documents建议使用Matlab计时器回调来完成此操作,但我发现回调仍未异步执行。

以下是一个简单的测试代码:

function [ ] = ThreadTest( )
    t = timer('StartDelay',0.1, 'TimerFcn',@utilityFcn);
    start(t);
    for i=1:10000;
        pause(0.1);
        fprintf('x');
    end
end

function utilityFcn(src,evt)
    % some lengthy calculation/update done here
    for i=1:100;
        temp = rand(1000,1000)*rand(1000,1000); 
    end
    fprintf('done');
end

我希望这个程序每0.1秒连续打印'x',并在回调结束时打印'done'。但是,在这个例子中,'x'仅在完成所有冗长的计算时打印(即,在打印'完成'之后始终打印)

0 个答案:

没有答案