A Modula2 programozási nyelv

Párhuzamosság



Párhuzamosság

A nyelv alapvetôen nem párhuzamos, de tartalmaz néhány lehetôséget párhuzamos végrehajtásra. A párhuzamosság kóperatív: nincsen ütemezô, amely idôszeleteket osztana ki, ehelyett az egymás mellett futó programok egymásnak explicit adják át a végrehajtás jogát.
Elemi műveletek

 A PROCESS átlátszatlan típus és néhány eljárás szolgál a folyamatok vezérlésére. A

NEWPROCESS(Torzs: PROC; VeremCim: ADDRESS; VeremHossz: CARDINAL; VAR Folyamat: PROCESS)

 eljárás létrehoz egy folyamatot, amely a megadott paraméter nélküli eljárás törzsébôl áll. A folyamat akkor ér véget, ha az eljárás végsô END-jére vagy egy HALT utasításra kerül a vezérlés. A

TRANSFER(VAR Elozo, Kovetkezo: PROCESS)

 megszakít egy folyamatot és egy másikkal folytatja a végrehajtást. Speciális vezérlésátadó eljárás az

IOTRANSFER(VAR Elozo, Kovetkezo: PROCESS; IOFlag: CARDINAL)

 eljárás, amely a TRANSFER-hez hasonlóan mûködik, azonban a megszakított folyamat automatikusan visszakapja a vezérlést, amikor a folyamat által adatforgalomra felkért periféria visszajelzést küld az IOFlag-ban arról, hogy az adatforgalom befejezôdött.
 

Korutinok

 A korutinok egymással párhuzamosan futó folyamatok, amelyek egymást aktivizálják. Amikor a vezérlés átadódik a következô korutinnak, annak a végrehajtása ott folytatódik, ahol az elôzô vezérlésátadáskor megszakadt. Ehhez nyújt segítséget a TRANSFER eljárás.