Sprach-Konstrukte / Threads / Nebenläufigkeit

Threads / Nebenläufigkeit

Normalerweise läuft ein Programm in einem einzigen Thread, Schritt für Schritt, durch. Doch es ist auch sehr einfach möglich, Prozesse auszulagern und z.B. Berechnungen parallel zum aktuellen Ablauf auszuführen.

Asynchron

Soll neben dem aktuellen Ablauf ein weiterer Prozess gestartet werden, so geschieht dies mit der Objekt-Funktion ".async":

this.async
	"Thread started".print

An ".async" lässt sich ein Block anhängen, es kann aber auch in einer Befehlskette verwendet werden:

123.print.async.mul(456789l).print
321.print

In diesem Beispiel wird nach der Ausgabe von "123" ein neuer Thread gestartet, der die Multiplikation berechnet und anschließend ausgibt.

Die Ausgabe dürfte in den meisten Fällen wie folgt aussehen:

123
321
56185047  

Synchron

Neben einer asynchronen Verarbeitung ist auch eine synchrone Verarbeitung möglich. In diesem Falle müssen alle anderen Threads ihre Verarbeitung kurz unterbrechen. Dies kann z.B. für den Zugriff von mehreren Prozessen auf verschiedene Variablen nötig sein. Eingeleitet wird ein synchroner Bereich mit der Objekt-Funktion ".sync":

this.sync
	"Only one Thread allowed here!".print

So wie ".async" lässt sich ".sync" auch innerhalb einer Befehlskette verwenden.

Schlafen

Manchmal ist es nötig, das Programm oder einen einzelnen Thread für eine gewisse Zeit pausieren zu lassen. Hierzu existiert die private Objekt-Funktion "._sleep". Mit dieser lässt sich der aktuelle Thread für eine gewisse Zeit schlafen schicken:

this._sleep( 200 )
Mögliche Argumente Beispiel
Millisekunden
this._sleep( 200 )
Sekunden, Millisekunden
this._sleep( 5, 500 )
Minuten, Sekunden, Millisec.
this._sleep( 2, 0, 0 )
Stunden, Minuten, Sekunden, Millisec.
this._sleep( 1, 30, 0, 0 )
- Powered by OghsWiki -

 

 

Unterstützen

Die Entwicklung von "JayMo" wird derzeit nur durch Eigeninitiative ermöglicht.

Erhalten:  0 €