C Control PRO UNIT MEGA 32 198206 Benutzerhandbuch

Produktcode
198206
Seite von 134
104
Compiler
© 2005 Conrad Electronic
Hardwareresource sein, die nur ein Thread bearbeiten kann. Oder manchmal definiert man
kritische Programmbereiche die nur ein Thread betreten darf. Diese Funktionen werden durch die
Anweisungen 
 realisiert.
Ein Thread der warten soll führt die Anweisung Thread_Wait mit einer Signal Nummer aus. Der
Zustand des Threads wird auf wartend gesetzt. Dies bedeutet das dieser Thread bei einem
möglichen Threadwechsel übergangen wird. Hat der andere Thread seine kritische Arbeit beendet
gibt er den Befehl Thread_Signal mit der gleichen Signalnummer die der andere Thread für
Thread_Wait benutzt hat. Der Threadzustand des wartenden Threads wechselt dann von wartend
zu inaktiv. Jetzt wird er bei einem möglichen Threadwechsel wieder berücksichtigt.
Deadlocks
Begeben sich alle aktiven Threads in einen Wartezustand mit 
 so gibt es keinen
Thread mehr der die anderen Threads aus dem wartenden Zustand befreien könnte. Diese
Konstellationen sind bei der Programmierung zu vermeiden.
Tabelle Threadzustände:
Zustand
Bedeutung
aktiv
Der Thread wird momentan abgearbeitet
inaktiv
Kann nach einem Threadwechsel wieder aktiviert werden
schlafend
Wird nach einer Anzahl von Ticks wieder auf "inaktiv" gesetzt
wartend
Der Thread wartet auf ein Signal
5.3.15.1 Thread_Cycles
Thread Funktionen
Syntax
void Thread_Cycles(byte thread, word cycles);
Beschreibung
Setzt die Anzahl der  Bytecode Instruktionen bis zum nächsten Threadwechsel auf cycles .
  Wird ein Thread neu gestartet, erhält er immer die Anzahl der Zyklen zugewiesen, die in den
Projektoptionen definiert wurden. Es macht also nur Sinn Thread_Cyles() aufzurufen, nachdem ein Thread
gestartet wurde.
Parameter
thread   (0-15) Nummer des Threads dessen Zyklus geändert werden soll
cycles   Anzahl der Zyklen bis zum Threadwechsel