Es gibt eine Art von Synchronisation, die zwischen den als Schlösser bezeichneten Threads besteht. In diesem Fall braucht Thread einen gegenseitigen Ausschluss. Es ist erforderlich, dass ein Thread gleichzeitig ausgeführt wird. Dann auch einander häufig erforderlich, wenn mehrere Fäden interagiert werden. Sie warten - warten und signalisieren. Ein Thread wartet, bis ein anderer Thread seinen Job beendet. Nach Abschluss der Ausführung dieses Threads kann der wartende Thread im Prozessor ausgeführt werden. Für eine solche Art von Threadsynchronisation benötigen wir eine andere Technik, die als beschäftigt auf einige Variablen zu warten ist. Dafür benötigen wir eine neue Synchronisation -Primitive, die als Konditionsvariablen bezeichnet wird.
Dieses Thread -Konzept ist im verschiedenen Betriebssystem verfügbar. Aber wir werden zu dem Namen, der Bedingungsvariablen, die als PThread -Bibliothek im Linux -Betriebssystem angewendet werden
Die Funktion pthread_cond_wait () ist eine Komponente des Wartens. Diese Funktion führt standardmäßig die Entsperraktion aus.
Programmierbeispiel-1:
In diesem Programm -Beispiel werden wir sehen, wie diese Funktion ausgeführt wird:
#enthaltenAusgang:
Erläuterung
In diesem Programmierbeispiel gibt es zwei Prozesse, die als übergeordnete Thread und ein untergeordneter Thread bezeichnet werden. Hier möchte Eltern auf das Kind warten. Nach Abschluss der Ausführung des Kinderprozesses startet Eltern seine Ausführung.
Für die Innenseite der Main () erstellen wir den Eltern- und Kinderfaden. Child -Thread führt die Funktion namens Child () aus. Dann ruft der übergeordnete Thread den Funktionsverbinden auf. Dieser Join () prüft im Grunde, dass das Kind fertig ist. Andernfalls wird es warten, indem die Funktion pThread_cond_wait () verwendet wird. Wenn das Kind läuft, ruft es die Exit () auf (). Wenn die Ausführung des Kindes erfolgt, wird der Wert der abgeschlossenen Variablen 1 betragen. Dann ruft es das Signal in der Bedingungsvariablen auf. Danach beginnt die Ausführung des übergeordneten Threads.
Warten Sie und Signalsyntax:
void Thr_exit ()Was passiert, wenn wir kein Schloss bekommen? Es wird eine Rennbedingung auftreten - verpasste Aufwachen.
Programmierbeispiel 2:
In diesem Programm -Beispiel werden wir eine weitere Verwendung von pThread_cond_wait Fuktion sehen.
#enthaltenAusgang:
Erläuterung
Hier sehen wir die Anwendung der Funktion pThread_cond_wait (). Es ist so, als ob jemand den Kraftstoff sein Auto füllen möchte. Er muss warten, bis sein Auto mit Treibstoff gefüllt wird. Dafür erstellen wir zwei Themen. Eine zum Füllen des Kraftstoffs im Auto und für das Auto. Wir werden zwei Funktionen definieren. Eine ist die Funktion () fördert (), die feststellt. Der Typ, der den Kraftstoff in seinem Auto füllen möchte, muss warten, bis der Treibstoff ausgefüllt ist.
In der Funktion main () erstellen wir zwei Fäden für die Funktion des Fueling () und für die Fahrzeug () -Funktion. Jetzt erstellen wir eine Zustandsvariable, um auf den Zustand zu warten. Dafür werden wir die Ausgabe sehen. Wenn Funktionen ihre Ausführung vervollständigen, werden wir diese Themen zerstören.
Abschluss
Die Funktion pThread_cond_wait () benachrichtigt, wenn wir mit Hilfe mehrerer Threads ein Programm durchgeführt haben. Diese Funktion macht einige Zustandsvariablen, um diese Threads zu verarbeiten. Tatsächlich hängt die Eigenschaften dieser Funktion vollständig vom Prinzip von ab Warten Sie und signalisieren Theorie.