A Genie programozási nyelv

Párhuzamosság

Szintaxis

A nyelv operációs rendszer szintű szálakat támogat. Ha használni szeretnénk ezen lehetőségeket, a fordításkor használnunk kell a --thread kapcsolót.

Alapvetően a Thread osztály statikus metódusait kell hívnunk.

A Thread osztály fontosabb nem-statikus metódusai:

A MainLoop osztály segítségével tudunk eseménykezelő főciklust használni magas szinten. Ennek használata javasolt például grafikus felületű alkalmazások fejlesztéséhez is.
Ezt szemlélteti a linkelt segédletből származó következő kód:

void main() { var loop = new MainLoop() var time = new TimeoutSource(2000) time.set_callback(def () print "Time!" loop.quit() return false) time.attach(loop.get_context()) loop.run()

Kommunikáció

Az AsyncQueue<T> sablon osztály segítségével tudunk szálak között kommunikálni. Ez az osztály aszinkron levelesláda szemantikával tesz lehetővé adatátvitelt soron keresztül. A sablonparaméter a kommunikáció egységét hatátozza meg, azaz hogy milyen adatokat fogunk rajta keresztül küldeni.
Két legfontos metódusa:

Szinkronizáció

A Mutex osztály lehetőséget ad folyamatok közötti szinkronizációra. Kérésre kizárólagos hozzáférést biztosít egy szálnak egy erőforráshoz, ezáltal garantálva, hogy két szál ne férjen hozzá szimultán ugyanahhoz az erőforráshoz. Az osztálynak két fontos metódusa van:

A Cond osztály egy adott kondíciót reprezentál, amelynek teljesülésére várakozhatnak szálak, illetve egyik metódusával jelezhetjük a kondíció teljesülését.