L'execution des callbacks de timer est serialisee par l'evaluateur. Un timer a cadence fixe peut se declencher a nouveau alors qu'un callback TimerFcn precedent est encore en file ou en cours. La propriete BusyMode controle la resolution de ce conflit par Nelson.
| BusyMode | Comportement |
|---|---|
| drop | Conserve au plus un callback en attente pour le timer. Les declenchements supplementaires sont ignores. |
| queue | Met chaque declenchement en file. Le timer peut continuer a executer des callbacks apres le passage des heures de declenchement prevues. |
| error | Arrete le timer et execute ErrorFcn, puis StopFcn si ces callbacks sont definis. |
BusyMode s'applique a l'execution fixedRate. Pour fixedDelay et fixedSpacing, le declenchement suivant est planifie apres la fin du callback, donc les callbacks ne s'accumulent pas de la meme maniere.
t = timer('ExecutionMode', 'fixedRate', ...
'BusyMode', 'queue', ...
'Period', 0.02, ...
'TasksToExecute', 3, ...
'TimerFcn', @(src, event) sleep(0.03));
start(t);
wait(t);
get(t, 'TasksExecuted')
delete(t);
t = timer('ExecutionMode', 'fixedRate', ...
'BusyMode', 'error', ...
'Period', 0.02, ...
'TasksToExecute', 5, ...
'TimerFcn', @(src, event) sleep(0.03), ...
'ErrorFcn', @(src, event) disp('timer queue conflict'));
start(t);
wait(t);
get(t, 'Running')
delete(t);
| Version | Description |
|---|---|
| 2.0.0 | version initiale |