Posix -tråd med C -programmering

Posix -tråd med C -programmering
En tråd er en liten forekomst som kjører i en prosess. Tråder kombineres for å lage en prosess, og de har noen egenskaper ved prosessen; Derfor regnes de som lette prosesser. Tråden er ikke uavhengig, akkurat som en prosess. Snarere jobber de sammen for å kompilere og lage en prosess. Likevel, akkurat som en prosess, har en tråd også sin egen PC (programteller) og et bestemt register satt sammen med stabelplass.

Posix tråd:

I Linux -plattformer er C- og C ++ -språk Pthread Standard API for alle slags trådrelaterte funksjoner. Det er også kjent som en POSIX -tråd som lar brukere lage mange tråder for samtidige prosesser å flyte. Det brukes best i flerkjernets systemer eller prosessorer for å implementere tråder på kjernen for å oppnå systemet.

Gjennomføring:

Det er nødvendig å inkludere denne pthread.h headerfil i skriptet opprinnelig. Dette vil hjelpe deg med å bruke funksjonene til Pthreads -biblioteket. For å utføre C -filen, følgende kommandoer

$ cc -pthread -fil.c

ELLER

$ cc -lpthread -fil.c

Funksjonene som er definert i Pthreads -biblioteket, kan omfatte:

pthread_create:

Den brukes til å lage en ny tråd

Parametere av pthread_create:

Den har følgende parametere:

tråd: Dette fungerer som en peker til en usignert heltallverdi. Den returnerer tråd -IDen til tråden som er dannet.

attributter: Denne parameteren fungerer som en peker til en struktur. Det brukes til å definere attributter til en tråd som kan være planleggingspolitikken, og stableadresse osv.

start_routine: Denne parameteren er en peker til en subroutine implementert av tråden.

argument: Denne parameteren er en peker for å være ugyldig med forskjellige argumenter for funksjonen forhåndsdefinert i starten av argumentet

Syntaks:

>> int pthread_create
(pthread_t * tråd, const pthread_attributes_t * attr, void * ( * start_routine) (void *), void * argument);

pthread_exit:

Det brukes til å avslutte eller avslutte en tråd

Parametere av pThread_Exit:

Metoden som brukes på slutten av metoden/prosessen godtar en parameter retval som er en obligatorisk indikator for et heltall. Den lagrer statusen til tråden slik at tråden avsluttes. Det må være en global variabel. Dette vil tillate neste tråd i linjen å bli med i tråden hvis den er tilgjengelig.

Syntaks:

>> void pthread_exit (void *retval);

pthread_join:

Dette er en funksjon som ble brukt på ventetid for avslutningen av tråden.

Parametere for pthread_join:

Parameteren som brukes her er:

tråd_id: Det er ID for tråden som tråden i kø venter.

tråd_return: Det er parameteren som fungerer som en peker til det aktuelle stedet der vi har definert utgangsstatus.

Syntaks:

>> int pthread_join (pthread_t thread_identification, void ** thread_return);

Pthread_self:

Dette er en metode som brukes for å få ID for tråden for øyeblikket i kø.

Syntaks:

>> pthread_t pthread_self (void);

pthread_equal:

Denne metoden brukes til å sammenligne i tilfelle to tråder er likeverdige eller ikke. Hvis to tråder er like, vil funksjonen returnere en annen verdi enn null som svar.

Syntaks:

>> int pthread_equal (pthread_t thread1, pthread_t thread2);

pthread_cancel:

Denne metoden brukes til å sende en forespørsel om kansellering

Parameter for pthread_cancel:

Parameteren som brukes er obligatorisk som skal legges inn for å kansellere forespørselen.

Syntaks:

>> int pthread_cancel (pthread_t trådnavn);

pthread_detach:

Dette er metoden som brukes til å skille en tråd. Den trenger ingen tråd for å bli med på oppsigelsen. Alle ressursene som kjører i tråden slippes så snart tråden er løsrevet.

Parameter for pthread_detachr:

Det er parameteren som godtar den obligatoriske parametertråden ID. Det er et must å løsrives.

Syntaks:

>> int pthread_detach (pthread_t tråd);

Eksempelkode:

Her er et eksempelkode for å vise implementering av ovennevnte funksjon. Vi brukte en GCC -kompilator for å kompilere disse funksjonene.

// program for å vise trådfunksjonene
#inkludere
#inkludere
#inkludere
// Ringer Posix-tråden, et must i Unix/Linux-systemer
pthread_t tid [2];
tomrom *funksjon (void *arg)

usignert lang i = 0;
pthread_t id = pthread_self ();
if (pthread_equal (id, tid [0]))
// Tilstand for at tråder er like

printf ("\ n første tråd behandles \ n");

ellers

printf ("\ n andre tråd behandles \ n");

// tråder som behandles.
for (i = 0; i<(0x255);i++);
return null;

Int Main (Void)

int i = 0;
int feil;
// Opprette en ny tråd
mens jeg < 2)

error = pthread_create (& (tid [i]), null, & funksjon, null);
hvis (feil != 0)
printf ("\ n ikke vært i stand til å lage tråden: [%s]", strerror (feil));
ellers
printf ("\ n tråd er opprettet med hell \ n");
// tråd opprettet med hell
i ++;

søvn (5);
retur 0;

Koden er skrevet i en tekstredigerer; Du kan bruke hvilken som helst redaktør basert på ditt valg. Lagre den deretter på favorittstedet ditt.

Filen lagres i datasystemet og får deretter tilgang til. Filen lagret av oss ble kalt test.c. For å få tilgang til den, skriv inn følgende kommando i terminalvinduet:

$ sudo gcc test.C -LPTHREAD

Neste, for å utføre utgangen, skriv inn følgende kommando:

$ ./en.ute

Forventet utgang:

Utgangen vi fikk som svar på forrige kode vises nedenfor:

Konklusjon:

Opplæringen dekket den grunnleggende prosessen med trådskaping og diskuterte alle de ofte brukte metodene i dens skapelse. Tråd er en forekomst av en prosess. Vi gikk deretter brukere gjennom de berømte parametrene som brukes av hver prosess sammen med syntaksene, slik at de kan benytte seg av dem i dataprogrammene sine. Her delte vi også et eksempelkode som et utvalg for å bedre forstå ideen om å lage et C -program i POSIX. Kompilatoren vi brukte var GCC i Linux -systemet. Brukere kan velge hvilken som helst annen kompilator også basert på deres preferanse.