Det er en type synkronisering som finnes mellom tråder som kalles låser. I dette tilfellet trenger tråden gjensidig utelukkelse. Det krever en tråd for å utføre om gangen. Deretter, også hverandre som kreves når flere tråder er samhandlet. De er - venter og signaliserer. En tråd vil vente til annen tråd er ferdig med jobben. Etter å ha fullført utførelsen av denne tråden, kan den ventende tråden utføres i prosessoren. For en slik type trådsynkronisering trenger vi en annen teknikk, kalt opptatt med å vente på noen variabler. For dette trenger vi en ny synkronisering primitive kalt tilstandsvariabler.
Dette trådkonseptet er tilgjengelig i forskjellige operativsystem. Men vi vil gå til navnet, tilstandsvariabler som brukes som Pthread -bibliotek i Linux -operativsystem
Funksjonen pthread_cond_wait () er en komponent av vent. Denne funksjonen som standard utfører låsingen.
Programmering eksempel-1:
I dette programmeringseksemplet vil vi se hvordan denne funksjonen utfører:
#inkludereProduksjon:
Forklaring
I dette programmeringseksemplet eksisterer det to prosesser som kalles en overordnet tråd og en barnetråd. Her vil foreldre vente på barnet. Etter å ha fullført utførelsen av barneprosessen, starter foreldrene utførelsen.
For innsiden () oppretter vi foreldre- og barnetråden. Barntråd utfører funksjonen som heter Child (). Deretter kaller foreldretråden funksjonen bli med. Denne sammenføyningen () sjekker i utgangspunktet at barnet er ferdig. Ellers vil det vente ved å bruke Pthread_Cond_wait () -funksjonen. Når barnet løper, kaller det avkjørselen (). Når barnets henrettelse er ferdig, vil verdien av variabel utført å være 1. Deretter kaller det signalet på tilstandsvariable. Etter det starter utførelsen av foreldretråden.
Vent og signalsyntaks:
void thr_exit ()Hva skjer hvis vi ikke får en lås? Det vil forekomme en løpsbetingelse - savnet vekker.
Programmering Eksempel-2:
I dette programmeringseksemplet vil vi se en annen bruk av pthread_cond_wait fuction.
#inkludereProduksjon:
Forklaring
Her vil vi se anvendelsen av Pthread_Cond_wait () -funksjonen. Det er som når noen vil fylle drivstoffet hans. Han må vente til bilen hans blir fylt opp med drivstoff. For dette lager vi to tråder. En for å fylle drivstoffet i bilen og for bilen. Vi vil definere to funksjoner. Den ene er Fueling () -funksjon som bestemmer når du skal fylle bilen med drivstoff og en annen er kjøretøy () -funksjonen for å få drivstoff. Fyren som vil fylle drivstoffet i bilen hans, må vente til drivstoffet er fylt opp.
Inne i hovedfunksjonen () vil vi lage to tråder for drivstoff () og for kjøretøy () -funksjon. Nå vil vi lage en tilstandsvariabel for å vente på tilstand. For dette vil vi se utdataene. Når funksjoner fullfører utførelsen, vil vi ødelegge disse trådene.
Konklusjon
Pthread_cond_wait () -funksjonen varsler når vi har gjort et program ved hjelp av flere tråder. Denne funksjonen vil lage noen tilstandsvariabler for å håndtere disse trådene. Egentlig avhenger egenskapene til denne funksjonen helt av prinsippet om Vent og signalisere teori.