Einzelnen Beitrag anzeigen

Olli
(Gast)

n/a Beiträge
 
#3

Re: Threads Suspend -> Resume ... wo gehts weiter?

  Alt 25. Aug 2005, 22:45
Zitat von gkoeder:
Wenn ich einen Thread starte, führt diese die Prozedur 'Execute' aus. Sobald der Thread mit seiner Arbeit fertig ist (... die Execute-Prozedur durchlaufen ist), setze ich den Thread in den Suspended-State (Er pausiert also). Wenn ich nun den Thread mit Resume wieder zum Leben erwecke, wo fährt der Thread mit seiner arbeit fort? Startet er erneut die Execute-Prozedur oder arbeitet er einfach die nächste Zeile ab, wo ich ihn zuvor pausiert habe?
Einen Thread benutzt man immer nur für wiederkehrende und/oder zyklische Probleme (Iterationen zB). Daher ist deine Execute-Methode ja üblicherweise eine Schleife. Wenn der Thread sich selber schlafenlegt, kannst du auch selber bestimmen, an welcher Stelle dies geschieht. Danach fährt er direkt hinter der Suspend-Anweisung fort.

Legst du den Thread von außen schlafen, kann man nicht sagen, wo er angehalten wird. Es kann zB mitten innerhalb einer Anweisung (auf HLL-Ebene) geschehen ... zB während ein Parameter bereits auf dem Stack liegt, der nächste aber noch nicht. Man kann es also nicht voraussagen, kann aber den Threadkontext holen und auch setzen (Rechte vorausgesetzt), wo unter anderen die aktuelle Adresse des EIP (Instruction Pointer) drinsteht.
  Mit Zitat antworten Zitat