7 – 9 µsec. Bij enkele bytecode commando's duurt het echter langer, bijv. Floating Point
operaties.
Ook interne interpreter –functies gelden als een cyclus. Omdat b.v.
een teken van de seriële interface aankomt, kan in uitzonderingsgevallen een cyclus zeer
lang duren.
Een thread krijgt voor zijn locale variabelen zoveel plaats als hem in de
project toegewezen is. Een uitzondering is thread "0" (het hoofdprogramma). Deze thread
krijgt de overige geheugenruimte, die de andere threads overlaten. U moet daarom vooraf
plannen hoeveel geheugenruimte elke extra thread werkelijk nodig heeft.
Opdat extra threads gestart kunnen worden, moet "multithreading" in de
ingeschakeld worden, en moeten de parameters voor de andere threads in de
op de correcte waarde gezet worden.
Bij het werken met threads moet steeds
Als er toch bijv. een AbsDelay(1000) gebruikt wordt, leidt dit tot het volgende effect: opdat de
thread pas na 5000 cycli (default waarde) naar de volgende thread wisselt, zou de thread
5000*1000ms (5000sec.) lopen tot de volgende thread zou kunnen werken.
Thread synchronisatie
Soms is het nodig dat een thread op de andere wacht. Dit kan bijv. een gemeenschappelijke
hardware bron zijn, die alleen één thread kan bewerken. Of soms definieert men een kritisch
programmabereik, dat slechts één thread mag betreden. Deze functies worden gerealiseerd
door de aanwijzingen
Thread Wait
Een thread die moet wachten, voert de aanwijzing Thread_Wait uit met een signaalnummer.
De toestand van de thread wordt op wachtend gezet. Dit betekent dat deze thread bij een
mogelijke wisseling van thread overgeslagen wordt. Als de andere thread zijn kritische werk
beëindigd heeft, geeft hij het commando Thread_Signal met hetzelfde signaalnummer dat de
andere thread voor Thread_Wait gebruikt heeft. De thread –toestand van de wachtende
thread verandert dan van wachtend in inactief. Nu wordt hij bij een mogelijke thread
wisseling weer "meegenomen".
Deadlocks
Als alle threads zich in een wachttoestand begeven met
meer die de andere threads uit de wachtende toestand zou kunnen bevrijden. Deze
constellaties dient u bij de programmering te vermijden.
Tabel thread –toestanden
Toestand
actief
inactief
slapend
wachtend
159
Thread Delay
en
Thread
Signal.
Betekenis
De thread wordt op dit moment bewerkt
Kan na een thread wisseling weer geactiveerd worden
Wordt na een aantal ticks weer op "inactief" gezet
De thread wacht op een signaal
Serial Read
threadopties
projectopties
threadopties
en niet
AbsDelay
gebruikt worden.
Thread
Wait, dan is er geen thread
wacht tot
van het