User manual
104Compiler
© 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
Thread_Wait
und
Thread_Signal
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
Thread_Wait
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