A Turing programozási nyelv

Párhuzamosságot támogató nyelvi eszközök

Párhuzamosságot támogató nyelvi eszközök

A Turing nyelvben nincsenek eszközök a párhuzamosság támogatására, azonban a Turing Plus egyik fontos újdonsága ezen helyzet megváltoztatása. A párhuzamos ágakat processzként kell deklarálni, az egyes folyamatok elindítása a fork utasítással lehet. A Turing Plus folyamatai potenciálisan ténylegesen párhuzamosak, többprocesszoros rendszer esetén egy időben valóban több processz futhat. A folyamatok közötti kommunikáció közös változókon keresztül történik; a kölcsönös kizárás megvalósításához a nyelv monitorokat használ. Az egyes monitorok várakozási sorai három félék lehetnek: azonnali (immediate), késleltetett (deferred) illtve időkorlátos (timeout) - az alapértlmezett az azonnali. Az első típus a szokásos, vagyis az aktivált folyamat azonnal futni kezd(het). Késleltetett esetben az aktivizált folyamat csak azután kezdhet el futni, ha az aktiváló folyamat már befejezte a monitorral kapcsolatos tevékenységét, vagyis a signal-t kiadó process még tovább használhatja a monitort. Az időkorlátos várakozási sorban lévő folyamat pedig implicit szignált kap, ha a megadott időkorláton belül nem történik meg az aktiválása. A Turing Plus alacsony szintű rendszerprogramok írásához is ad eszközöket. Ilyenek például az eszköz-monitorok, amelyek hardver erőforrások kölcsönös kizárásos használatát biztosítják.

példa kód:
    % egy egyszerű párhuzamos program

process speak(word: string) loop put word end loop end speak fork speak("Hi") fork speak("Ho")
    % szemafor implementálása monitorral

monitor semephore export(P, V) var n:=0 var q: condition prcedure P if n=0 then wait q end if n -=1 end P
procedure V n+=1 signal q end V end semaphore