A Nasal programozási nyelv

Párhuzamosság

Párhuzamos programok írásához kétféle megoldást is használhatunk a Nasalban. Az egyik a szabványos könyvtár thread modulja, a másik pedig a unix modul fork() és waitpid() függvényei, amik a POSIX-ban megszokottak szerint használhatóak. Itt csak a thread modul használatát részletezzük.

Új szálat a thread.newthread(func) függvénnyel indíthatunk, az új szálban a megadott függvénykifejezés fog elindulni.

Mutexet a thread.newlock() függvénnyel tudunk létrehozni, lezárni a thread.lock(lock)-kal, elengedni pedig a thread.unlock(lock) függvénnyel lehet.

Szemafort hasonló módon a thread.newsem() függvénnyel tudunk létrehozni. A szemafor számlálója kezdetben 0, ezt növelni a thread.semup(sem) függvénnyel lehet, csökkenteni (amennyiben nem 0, ez esetben várakoztat a függvény) pedig a thread.semdown(sem) függvénnyel.