Resume - Suspend

Multitasking

rbr50
 
Avatar
 
Subject:

Resume - Suspend

 · 
Posted: 08.09.2011 - 08:16  ·  #1
Hallo,

ich beschäftige mich nun zum 1. Male richtig mit dem Multitasking. Dolle Sache!

Bitte eine Frage zu folgendem Fragment:

Code
Task LadenMaxStrom(idata, 8, suspended);
begin
  if (ADStrom > SollStrom) then
    if    (PWMport1A > 1) then
      dec(PWMport1A);
    endif;
  else
    if (ADVolt > LadeSpannung)  and(PWMport1A > 1) then
      dec(PWMport1A);
      LadeModus:= lmZeit;
      Resume(LadenNachZeit);
      suspend(self);
    endif;
    if (ADVolt < LadeSpannung) and(PWMport1A < 254) then
      inc(PWMport1A);
    endif;
  endif;
end;


Wird die Anweisung suspend(self) sicher ausgeführt? Oder kann es sein, das nach dem Resume(LadenNachZeit) der Task drankommt?

Ich habe es so verstanden, das Tasks immer komplett abgearbeitet werden. (Wenn sie nicht länger als einen Systick brauchen). Also dürfte suspend(self) sicher ausgeführt werden.

Danke fürs Lesen und Ihre Zeit!

Rolf
rbr50
 
Avatar
 
Subject:

Re: Resume - Suspend

 · 
Posted: 08.09.2011 - 12:06  ·  #2
Hallo,

ich habe gerade im Simulator getestetet.
Code
resume(EinTask);
suspend(self);

wird richtig ausgeführt, also EinTask wird gestartet, dann der eigene Task beendet.

Aber bei der Reihenfolge

Code
suspend(self);
resume(EinTask);


führt das suspend dazu, dass das resume nicht mehr ausgeführt wird. Auch innerhalb eines Task. Wobei ich dachte, das ein Task IMMER ganz bearbeitet wird.

Habe ich jetzt also richtig simuliert und verstanden: suspend(self) bricht Task und Process unbedingt ab, es wird nichts mehr nach dem suspend-Befehl ausgeführt?

Danke!

Rolf
rh
Administrator
Avatar
Gender:
Location: Germany
Age: 24
Homepage: e-lab.de
Posts: 5558
Registered: 03 / 2002
Subject:

Re: Resume - Suspend

 · 
Posted: 08.09.2011 - 13:05  ·  #3
Hallo Rolf,

ja, das ist komplett richtig. Ein Suspend bricht den laufenden Task sofort ab. Die folgende Anweisung wird nicht mehr ausgeführt. Bei einem Task wird dieser, falls irgendwo ein Resume dieses Tasks erfolgt war, der Task wieder von Anfang an gestartet. Bei einem Prozess wird nach einem Resume wieder da weitergemacht wo das Suspend stand, also hinter dem Suspend.

rolf
rbr50
 
Avatar
 
Subject:

Re: Resume - Suspend

 · 
Posted: 08.09.2011 - 15:15  ·  #4
Hallo,

vielen Dank für Ihre Antwort. Und Hut ab vor Ihren Leistungen. Wie schaffen Sie es, auch noch Zeit fürs Forum zu finden?


Rolf
rh
Administrator
Avatar
Gender:
Location: Germany
Age: 24
Homepage: e-lab.de
Posts: 5558
Registered: 03 / 2002
Subject:

Re: Resume - Suspend

 · 
Posted: 08.09.2011 - 20:20  ·  #5
8-) die Nacht zum Tage machen

rolf
Selected quotes for multi-quoting:   0

Registered users in this topic

Currently no registered users in this section

The statistic shows who was online during the last 5 minutes. Updated every 90 seconds.
MySQL Queries: 15 · Cache Hits: 14   93   107 · Page-Gen-Time: 0.0254s · Memory Usage: 2 MB · GZIP: on · Viewport: SMXL-HiDPI