Gebeurtenissen inplannen: hoe scripts op hun beurt wachten
Een gebeurtenislus, of event loop, ordent werk dat op verschillende momenten klaarstaat. In Pliro kunnen gebeurtenisscripts starten doordat het programma begint, een tijdklok afloopt of invoer binnenkomt.
Een wachtrij is een rij met wachtend werk. FIFO betekent first in, first out: wie het eerst aansluit, komt het eerst aan de beurt. Klaarstaand werk sluit achteraan aan en krijgt vooraan zijn beurt.
Wachten geeft een ander script een beurt
# taal: nl
wanneer gestart():
zeg "A"
wacht(0.02)
zeg "B"
wanneer gestart():
zeg "C"
De volgorde is A, C, B. Het eerste script wacht, waardoor het tweede klaarstaande script kan draaien. Na de wachttijd kan het eerste verdergaan.
Pliro gebruikt coöperatieve planning: scripts geven ander werk op bepaalde plekken een kans. Zo’n plek heet een controlepunt. Wachten met een positieve duur is een voorbeeld. Dit belooft niet dat iedere bronregel tegelijk met andere scripts wordt uitgevoerd.
Tijd en toestand
Twintig milliseconden is 0,02 seconde. Dat een tijdklok klaar is, garandeert niet dat de uitvoering precies op dat moment doorgaat. Ander werk en de omgeving beïnvloeden de beurt.
Scripts kunnen globale variabelen delen. Bedenk wat een ander script kan veranderen terwijl jouw script wacht. Vermijd lange lussen die nooit een beurt afstaan; uitvoergrenzen kunnen een op hol geslagen programma stoppen.
