Pthread_exit 3 c funksjon

Pthread_exit 3 c funksjon
“Du har kanskje gått gjennom mange Posix C -funksjoner mens du bruker et hvilket som helst Linux -operativsystem. Pthread_Exit () -funksjonen er en av disse POSIX -funksjonene. Pthread_exit () brukes til å avslutte utførelsen av den anropende tråden. Ringetråden avsluttes ved hjelp av PTHREAD_EXIT () -funksjonen, og utførelsen er suspendert ved hjelp av PTHREAD_JOIN () -funksjonen til måltråden har fullført utførelsen. Så den avsluttes den anropende tråden og sender status til hvilken som helst tråd som bruker tråd -ID for termineringstråden for å ringe pthread_join (). Innenfor denne opplæringen vil vi se på bruken av Pthread_Kill -funksjonen i C.”

For det første må du logge inn fra Linux -systemet og starte terminalen. I skallet kan du prøve å lage en C -fil ved hjelp av VIM -redigereren og navngi den pthread_kill.c. Når det åpnes i VIM -redaktøren i innsatsmodus, skriver du kodelinjene i den.

De essensielle overskriftsfilene er innarbeidet i de tre første kodelinjene, og deretter er funksjonshodet for skjermmeldingsfunksjonen, som godtar en Void Pointer, erklært. Lag en global variabel etter det, og sett verdien til 0. To variabler av type pthread_t kalt tråd_p & tråd_ er erklært. Pthread_t er en datatype som brukes til å identifisere en tråd som er opprettet i hovedfunksjonen. Når programmet ringer funksjonsanrop som krever en trådidentifikasjon, tar det verdien returnert av Pthread_Create () -funksjonen.

To karaktertypepekervariabler som brukes til å lagre meldingen for primære og sekundære tråder er definert i følgende kodelinjer. To heltall er deretter definert, med verdier på henholdsvis 100 og 200. Etter det laget vi to separate tråder, som hver bruker visningsmeldingsmetoden. Send de individuelt genererte trådidentifikatorene og meldinger til hver tråd separat; Etter det utskriften heter uttalelsen, som er meldingen før tråden av trådene. Når vi går ut eller avslutter trådene da, blir all utførelsen suspendert, og ingen utgang vil vises. Den globale variabelen økes med 1 i skjermmeldingsfunksjonen.

Se de tilgjengelige filene og mappene i arbeidskatalogen ved å legge inn LS -kommandoen i kommandolinjen til terminalen.

Skriv inn kommandoene som er oppført nedenfor for å bygge en fil som inneholder trådrelaterte utsagn fordi de skiller seg fra standard samlingen instruksjoner. Kommandoen initieres med kompilatoren fordi vi bruker GCC -kompilatoren og Linux -operativsystemet. -Pthread -bryteren blir deretter brukt. Etter å ha spesifisert filnavnet med -o -flagget, blir utdatafilen opprettet med det forespurte navnet.

Bare skriv inn kommandoen (./pthread Kill.ut) i terminalen for å kjøre utgangsfilen og se resultatene. Ingen uttalelser vil bli utført etter før uttalelsen siden begge trådene er avsluttet ved hjelp av Pthread_Exit -funksjonen. Så snart den primære tråden er etablert, kaller den visningsmeldingsmetoden, og øker den globale variabelenes verdi fra 0 til 1, som deretter vises. I likhet med det påberopes en andre tråd deretter, som viser verdien av den globale variabelen etter en økning, noe som resulterer i en verdi av 2.

Lag nå en annen C -programmeringskodefil ved hjelp av VIM -redigeringsprogram og skriv koden til den. Filnavnet er pthread_exit.c.

De viktige overskriftsfilene er integrert i de to første linjene i kodefilen. Fra det ble det erklært en global variabel, og verdien ble satt til 0. Displayfunksjonen er deretter skrevet, og en parameter for tomromstype blir gitt til den. Alle trådene som vi oppretter i hovedfunksjonen vår vil utføre denne koden. Tråd -ID -variabelenes argumentverdi lagres i funksjonens første linje. Nå som en statisk variabel er definert og satt til 0, vil verdien bli endret i funksjonen. Deretter trykket vi tråd -ID og verdiene til de globale og statiske variablene etter å ha økt dem.

Bruk GCC -kompilatoren til å kompilere C -koden med alternativet -Pthread, og lagre deretter utdataene til Pthread Exit.ut fil. Bare en tråd kan fullføre utførelsen siden vi bruker samme tråd -ID for å generere flere tråder og deretter avslutte tråden inni løkken.

Her er utdataene fra filen etter vellykket samling. Det betyr at hvis noen tråd avsluttes ved hjelp av en exit -setning, vil ingen annen tråd bli utført.

Hver tråd genereres og utføres riktig hvis vi endrer koden litt ved å endre exit -setningen og flytte linjen utenfor løkken. Dette er kodestykket gitt i utdraget nedenfor:

Etter sammenstilling og når vi utfører utdatafilen, genereres utdataene nedenfor, som viser at alle tråder fullførte utførelsen. Utgangen viser at verdiene til globale og statiske variabler er de samme for alle tråder, noe som betyr at den samme trådreferansen brukes.

La oss endre koden vår litt mer og kommentere Pthread_Exit -setningen på slutten av displayfunksjonen. Her er skjermen på koden:

Her er output -skjermbildet av koden ovenfor. Bare bare tre tråder blir utført; Du kan se verdiene til de globale og statiske variablene. Den andre og tredje tråden har de samme verdiene for begge.

Konklusjon

Denne artikkelen handler om bruk av Pthread_Kill -funksjonen i C for å avslutte behandlingen av en anropstråd i et program, men termineringsprosessen for anropsfunksjonen må stoppes en stund ved å bruke Pthread_Join () -metoden til målmetoden er oppnådd. Du kan benytte deg av de enkle eksemplene som er demonstrert ovenfor for å få en klar forståelse.