Sem_getValue () -funksjonen får verdien av semaforen. Det får verdien enten det er en navngitt semafor eller ikke navngitt semafor. Når det gjelder nullverdien av semaforen, returnerer den en negativ verdi. Når noen tråder venter på semaforen, returnerer den en negativ verdi. Den absolutte verdien av den slags negative heltall representerer antall tråder som venter på semaforen. "Sem_getValue ()" -funksjonen er definert i “Semaforen. h ”headerfil. Vi vil gå gjennom denne "sem_getValue ()" -funksjonen i denne guiden og vil demonstrere eksemplene der vi bruker denne "sem_getValue ()" -funksjonen for å gi deg en god forståelse av dette konseptet.
Syntaks:
# int sem_getValue (sem_t * sem, int * verdi);Eksempel nr. 1:
Denne guidens eksempler vil fungere med Ubuntu 20.04. Å kjøre disse eksemplene på Ubuntu 20.04, må GCC -kompilatoren installeres. En liten bit av C -koden genereres når GCC er installert for å demonstrere hvordan du bruker "sem_getValue ()" -funksjonen i C -programmeringen. Noen få toppfiler brukes ved begynnelsen av koden. Vi har “stdio. h ”overskriftsfil som følger som er standardinngangs-/output -overskriftsfilen. Vi må legge til denne overskriftsfilen når vi skriver C -koden.
Etter dette satte vi “semaforen. h ”headerfil. Vi inkluderer denne overskriftsfilen slik at vi kan bruke "sem_getValue ()" -funksjonen slik den er definert i denne overskriftsfilen. Deretter setter vi "Main ()" -funksjonen her. Vi bruker "int" datatypen med denne "main ()" -funksjonen. Vi har også "sem_t" med navnet "my_sem". Her er "my_sem" erklært, og "num" av "int" datatypen er også erklært. Under dette bruker vi "sem_init ()" -funksjonen. Denne "sem_init" inneholder tre parametere. Den første parameteren er “& My_sem” som initialiserer semaforen. Den andre parameteren indikerer hvordan denne semaforen brukes eller deles.
Her setter vi “0” som den andre parameteren som betyr at det er den eneste tråden som kjører i den eksisterende prosessen som skal bruke denne semaforen. Den tredje parameteren beskriver den foreløpige verdien av semaforen. Her setter vi den opprinnelige verdien av denne semaforen som "10". Etter dette har vi "sem_getValue ()" -funksjonen som får den foreløpige verdien av semaforen. Vi passerer de to parametrene som “& my_sem” og “& num”. Semaforens nummer oppnås på denne måten. Nå skriver vi ut dette nummeret på terminalskjermen ved å skrive "printf" -uttalelsen. Dataene som er skrevet her er gjengitt på skjermen.
Vi har to kommandoer for å få utdataene fra denne koden. Vi må legge “-lpthread” og “-lrt” med den første instruksjonen og trykk Enter. Etter en vellykket samling kjører vi den andre kommandoen og gjengir utgangen. Du kan se i denne utgangen at den viser den opprinnelige verdien av semaforen.
Eksempel 2:
Vi har to overskriftsfiler her, “Stdio. H ”og“ Semafor. H ”, som vi allerede har diskutert i vår forrige kode. Vi har "int main ()". Under dette er det “SEM T” som heter “my_sem” og “new_sem”. I dette tilfellet er "my_sem" og "new_sem" erklært, og "num" og "verdi" er også erklært som "int" datatype. Vi har også "sem_init ()" -funksjonen og passerer de tre parametrene.
Deretter bruker vi "sem_getValue ()" -funksjonen for å få den opprinnelige verdien som vi passerte som en tredje parameter for "sem_init" -funksjonen og skriver ut denne verdien på skjermen ved hjelp av "printf" fucntion. Under dette bruker vi igjen "sem_init ()" -funksjonen på samme måte som vi benyttet den forrige funksjonen. Deretter får vi den opprinnelige verdien ved hjelp av "sem_getValue ()" -funksjonen og skriver den ut.
Her har vi to forskjellige linjer på utgangen. Først får vi verdien av den første semaforen og viser den og får deretter den første verdien av den andre semaforen og skriver den ut på utgangsskjermen.
Eksempel nr. 3:
Vi oppdaterer den forrige koden litt her. Koden er identisk med den vi utviklet tidligere. Vi plasserer de to toppfilene - “Stdio. H ”, og“ Semafor. H ” - som er viktig for denne koden og bruker“ int main () ”-funksjonen. Under denne hovedfunksjonen erklærer vi semaforen og verdien som er "int" datatype. Deretter initialiserer vi semaforen ved hjelp av "sem_init" og passerer parametrene for denne funksjonen. Deretter får vi den første verdien av denne semaforen ved å bruke "Sem_getValue ()" -funksjonen. Skriv den deretter ut på samme måte som vi beskrev tidligere.
Her legger vi til en ny funksjon som er "sem_wait ()" -funksjonen. Vi bruker denne funksjonen til å låse semaforen. Deretter bruker vi igjen denne "sem_getValue ()" -funksjonen. Du vil se i utgangen hvordan det får den første verdien etter "sem_wait ()" -funksjonen. Vi skriver også ut den verdien ved å bruke "printf ()" -funksjonen.
I dette skjermbildet kan du se at den første innledende verdien av semaforen er "10", men etter "sem_wait ()" -funksjonen får den verdien som er "9". Den skriver ut “9” -verdien etter “sem_wait ()” -funksjonen.
Konklusjon
Vi ga denne guiden for deg å forklare "sem_getValue ()" -funksjonen i detalj. Formålet, kodene og resultatene av "sem_getValue ()" -funksjonen ble adressert i denne guiden. Denne guiden diskuterte allerede C -funksjonen “Sem_getValue ()”. Vi diskuterte at "sem_getValue ()" -funksjonen i C brukes for å få verdien av semaforen. Vi har gått gjennom de tre forskjellige eksemplene. Hvert eksempel på utdata så vel som C -kildekoden er påkrevd for å bruke "sem_getValue ()" -funksjonen er oppgitt. Etter å ha lest denne guiden nøye og kjørt disse kodene på egen hånd, er vi sikre på at du enkelt vil forstå dette konseptet.