Ruby Erstellen Sie einen neuen Thread

Ruby Erstellen Sie einen neuen Thread

Ein Thread ist eine einzige Ausführungseinheit in einem Programm. Ein gewöhnliches Programm ist Single-Threaded.

Auf der anderen Seite kann das Programm mit Multi-Threading mehrere Threads erstellen, bei denen Anweisungen in einem Programm gleichzeitig ausgeführt werden können. Es bietet eine hervorragende Nutzung von Systemressourcen wie CPU und Speicher.

In Ruby verwenden wir Threads mit Hilfe der Threads -Klasse. Themen in Ruby sind nicht ressourcenlastig, wodurch sie effizient für die Verwendung von Parallelität in Ihren Programmen sind.

Themen werden im Ruby -Dolmetscher für Ruby Version 1 implementiert.9 und unten. Ab Version 1.9 und höher wird das Threading im Betriebssystem implementiert.

Mit diesem Handbuch lernen Sie, wie Sie Threads in Ruby -Programmierung implementieren.

Hinweis: Der Interpreter (MRT) von Matz hat ein globales Interpreter -Schloss, das verhindern, dass mehrere Threads gleichzeitig ausgeführt werden. Dies gilt jedoch nicht für Jruby- und Rubinius -Dolmetscher.

Erstellen eines Threads

Wie bereits erwähnt, können wir mit der Thread -Klasse mit Threads arbeiten. Um einen neuen Thread zu erstellen, rufen Sie den Thread auf.Neue Methode.

Die Syntax ist:

Gewinde.neuer # Thread Block geht hier

Stellen Sie sicher, dass der Code, den Sie vom Thread in das Paar lockiger Klammern ausgeführt haben möchten.

Hier ist ein Beispiel:

Gewinde.neu Puts "Hallo, Welt!"

Nehmen wir ein einfaches Programm, das den Bereich eines Kreises berechnet.

Def Area
pi = 3.14159
rad = 7.3
return (pi * rad * rad)
Ende
Gewinde.neu
Bereich()
legt "in den Thread laufen!"

setzt "Ausführung vollständig!"

Wenn Sie das obige Beispiel ausführen, werden Sie feststellen, dass wir den Bereich des Kreises nicht erhalten. Dies liegt daran, dass Ruby nicht darauf wartet, dass die erstellten Threads die Ausführung beenden. Um sicherzustellen, dass die Threads abgeschlossen sind, müssen wir die Join -Methode aufrufen.

Die Join -Methode pausiert die Ausführung des Haupt -Threads und wartet auf die in der Join -Methode angegebenen Threads zu vervollständigen.

Im Folgenden finden Sie den obigen Beispielcode mit der implementierten Join -Methode.

Def Area
pi = 3.14159
rad = 7.3
return (pi * rad * rad)
Ende
Thread = Thread.neu
setzt "Die Fläche des Kreises ist #aible () cm2"
legt "in den Thread laufen!"

Gewinde.verbinden
setzt "Ausführung vollständig!"

In diesem Beispiel erhalten wir die Ausgabe des Threads wie unten gezeigt:

Der Bereich des Kreises ist 167.4153310999997 CM2
Im Faden laufen!
Ausführung vollständig!

Einen Faden beenden

Ruby bietet verschiedene Möglichkeiten, einen Faden zu beenden. Eine solche Möglichkeit besteht darin, die Kill -Methode zu verwenden.

Die Syntax ist:

Gewinde.töten (Thread)

Geben Sie den Namen des Threads an, der in der Klammern terminiert wird.

Thread -Ausnahmen

Sie werden feststellen, dass die Programmausführung, wenn eine Ausnahme in einem Thread auftaucht, nicht stoppt.

Zum Beispiel:

Def ERROR_ME
Erhöhen Sie "Fehler!"
Ende
Gewinde.neu error_me
Setzt "Ich renne noch"

Im obigen Beispiel stellen wir eine Ausnahme innerhalb der an den Thread übergebenen Funktion auf. Sie werden zwei Dinge bemerken:

  1. In dem Thread wird die Fehlermeldung nicht angezeigt
  2. Der Code nach dem Thread wird noch ausgeführt.

In einigen Fällen möchten Sie möglicherweise die Ausführung einstellen, wenn eine Ausnahme in einem Thread auftaucht. Wir können dies mit der abort_on_execption tun.

Zum Beispiel:

Gewinde.abort_on_exception = true
Thrady = Thread.Neues Do
stellt "Ich renne vor Ausnahme"
Erhöhung "Ausnahme trat auf!"
Ende
dreifach.verbinden
Setzt "Entschuldigung, ich renne nicht!"

Im obigen Beispiel wird das Programm beendet, wenn bei einer Ausführung im Thread auftritt. Hier ist ein Beispielausgang:

Ich renne vor der Ausnahme
# mit Ausnahme beendet (Report_on_exception ist wahr):
Themen.RB: 4: In 'Block in': Ausnahme trat auf! (Laufzeit Fehler)
Themen.RB: 4: In 'Block in
': Ausnahme aufgetreten! (Laufzeit Fehler)

Fadenvariablen

Variablen, die in einem Thread erstellt wurden. Sie sind nur im Bereich des Threads zugänglich, in dem sie erstellt werden.

Fadenzustände

Sie können den Status eines bestimmten Threads mit der Statusmethode abrufen. Sie können auch das Leben verwenden, um zu überprüfen, ob der Thread ausgeführt wird, und anhalten, um zu überprüfen, ob der Thread tot ist.

Für die Statusmethode gibt es fünf Rückgabewerte:

  1. Betrieb - Rücklauf
  2. Schlafen - kehrt schlafen zurück
  3. Abbrechen - Rücksende abgebrochen
  4. Mit Ausnahme beendet - kehrt nil zurück
  5. Normal enden - Gibt false zurück.

Abschluss

In diesem Leitfaden haben wir die Grundlagen der Arbeit mit Threads in der Ruby -Programmiersprache besprochen.

Es ist gut zu beachten, dass es mehr gibt als das, was wir in diesem Leitfaden besprochen haben. Betrachten Sie die Dokumentation, um mehr zu erfahren.

Vielen Dank für das Lesen!