Die Funktion sem_getValue () erhält den Wert des Semaphors. Es erhält den Wert entweder ein benanntes Semaphor oder ein namentliches Semaphor. Im Falle des Nullwerts des Semaphors gibt es einen negativen Wert zurück. Wenn einige Themen auf dem Semaphor warten, gibt es einen negativen Wert zurück. Der absolute Wert dieser Art von negativer Ganzzahl repräsentiert die Anzahl der Threads, die auf dem Semaphor warten. Die Funktion „sem_getValue ()“ ist im "Semaphor" definiert. H ”Header -Datei. Wir werden diese Funktion „sem_getValue ()“ in dieser Anleitung durchgehen und die Beispiele demonstrieren, in denen wir diese Funktion „sem_getValue ()“ verwenden, um Ihnen ein gutes Verständnis dieses Konzepts zu vermitteln.
Syntax:
# int sem_getValue (sem_t * sem, int * value);Beispiel 1:
Die Beispiele dieses Leitfadens funktionieren mit Ubuntu 20.04. Diese Beispiele auf Ubuntu 20 durchführen.04 muss der GCC -Compiler installiert werden. Ein kleines Bit des C -Codes wird generiert, wenn GCC installiert ist, um zu demonstrieren, wie die Funktion „sem_getValue ()“ in der C -Programmierung verwendet wird. Zu Beginn des Code werden einige Header -Dateien verwendet. Wir haben das „Stdio. H ”Header -Datei wie folgt, was die Standardeingangs-/Ausgabeminoperation ist. Wir müssen diese Header -Datei hinzufügen, wenn wir den C -Code schreiben.
Danach setzen wir das „Semaphor. H ”Header -Datei. Wir geben diese Header -Datei ein, damit wir die Funktion „sem_getValue ()“ verwenden können, wie sie in dieser Header -Datei definiert ist. Dann setzen wir die Funktion „main ()“ hier ein. Wir verwenden den Datentyp "int" mit dieser Funktion "main ()". Wir haben auch das "sem_t" mit dem Namen "my_sem". Hier wird "my_sem" deklariert und die "Num" des "int" -Patentyps wird ebenfalls deklariert. Darunter verwenden wir die Funktion „sem_init ()“. Dieses „Sem_init“ enthält drei Parameter. Der erste Parameter ist das "& my_sem", das das Semaphor initialisiert. Der zweite Parameter gibt an, wie dieses Semaphor verwendet oder gemeinsam genutzt wird.
Hier setzen wir „0“ als zweite Parameter ein, was bedeutet, dass er der einzige Thread ist, der im vorhandenen Prozess ausgeführt wird, der dieses Semaphor verwenden wird. Der dritte Parameter beschreibt den vorläufigen Wert des Semaphors. Hier setzen wir den Anfangswert dieses Semaphors als „10“ ein. Danach haben wir die Funktion „sem_getValue ()“, die den vorläufigen Wert des Semaphors erhält. Wir übergeben die beiden Parameter als "& my_sem" und "& num" als "& my_sem" und "& num". Die Nummer des Semaphors wird auf diese Weise erhalten. Jetzt drucken wir diese Nummer auf dem Terminalbildschirm, indem wir die Anweisung „Printf“ eingeben. Die hier geschriebenen Daten werden auf dem Bildschirm wiedergegeben.
Wir haben zwei Befehle, um die Ausgabe dieses Codes zu erhalten. Wir müssen das "-lpThread" und "-lrt" mit der ersten Anweisung und drücken. Nach einer erfolgreichen Zusammenstellung führen wir den zweiten Befehl aus und rendern die Ausgabe. Sie können in dieser Ausgabe sehen, dass der Anfangswert des Semaphors angezeigt wird.
Beispiel #2:
Wir haben hier zwei Header -Dateien: „Stdio. H ”und„ Semaphor. H “, das wir bereits in unserem vorherigen Code besprochen haben. Wir haben die "int main ()" ". Darunter befindet sich das "SEM T" mit dem Namen "my_sem" und "new_sem". In diesem Fall werden "My_Sem" und "New_Sem" deklariert und der "Num" und "Wert" ebenfalls als "int" -Datentyp deklariert. Wir haben auch die Funktion „sem_init ()“ und übergeben die drei Parameter.
Anschließend verwenden wir die Funktion „sem_getValue ()“, um den Anfangswert zu erhalten, den wir als dritter Parameter der Funktion „Sem_init“ übergeben und diesen Wert mit Hilfe der „Printf“ -Fuktion auf dem Bildschirm drucken. Darunter verwenden wir erneut die Funktion „sem_init ()“ genauso wie wir die vorherige Funktion verwendet haben. Dann erhalten wir den Anfangswert mit Hilfe der Funktion „sem_getValue ()“ und drucken sie.
Hier haben wir zwei verschiedene Zeilen auf der Ausgabe. Zuerst erhalten wir den Wert des ersten Semaphors und zeigen ihn an und dann den Anfangswert des zweiten Semaphors und drucken Sie ihn auf dem Ausgangsbildschirm aus.
Beispiel #3:
Wir aktualisieren den vorherigen Code hier ein wenig. Der Code ist identisch mit dem, den wir zuvor entwickelt haben. Wir platzieren die beiden Header -Dateien - “stdio. H ”und„ Semaphor. H ” - die für diesen Code unerlässlich sind und die Funktion„ int main () “verwenden. Unterhalb dieser Hauptfunktion deklarieren wir das Semaphor und den Wert, der der Datentyp „int“ ist. Anschließend initialisieren wir das Semaphor mit dem "sem_init" und übergeben die Parameter dieser Funktion. Anschließend erhalten wir den Anfangswert dieses Semaphors mit der Funktion "sem_getValue ()". Drucken Sie es dann auf die gleiche Weise aus, wie wir es zuvor beschrieben haben.
Hier fügen wir eine neue Funktion hinzu, die die Funktion "sem_wait ()" ist. Wir verwenden diese Funktion, um das Semaphor zu sperren. Dann verwenden wir diese Funktion „sem_getValue ()“ erneut. Sie werden in der Ausgabe sehen, wie der Anfangswert nach der Funktion „sem_wait ()“ den Anfangswert erhält. Wir drucken diesen Wert auch mit der Funktion „printf ()“ aus.
In diesem Screenshot können Sie erkennen, dass der erste Anfangswert des Semaphors „10“ ist, aber nach der Funktion „sem_wait ()“ erhält es den Wert, der „9“ ist, der Wert ist, der „9“ ist. Es druckt den Wert "9" nach der Funktion "sem_wait ()".
Abschluss
Wir haben diese Anleitung für Sie zur Verfügung gestellt, um die Funktion „sem_getValue ()“ im Detail zu erläutern. Der Zweck, die Codes und die Ergebnisse der Funktion „sem_getValue ()“ wurden in diesem Handbuch behandelt. In diesem Handbuch wurde bereits die C -Funktion "sem_getValue ()" besprochen ". Wir haben besprochen, dass die Funktion „sem_getValue ()“ in C verwendet wird, um den Wert des Semaphors zu erhalten. Wir haben die drei verschiedenen Beispiele durchgemacht. Die Ausgabe jedes Beispiels sowie der C -Quellcode sind erforderlich, um die Funktion „sem_getValue ()“ zu verwenden, die zur Verfügung gestellt werden. Nachdem wir diesen Leitfaden sorgfältig gelesen und diese Codes selbst ausgeführt haben, sind wir sicher, dass Sie dieses Konzept leicht erfassen werden.