C Programmering

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 å skape en prosess, og de har noen egenskaper ved prosessen; derfor betraktes de som lette prosesser. Tråden er ikke uavhengig, akkurat som en prosess. Snarere jobber de sammen for å kompilere og skape en prosess. Likevel, akkurat som en prosess, har en tråd også sin egen PC (Program Counter) og et bestemt register satt sammen med stabelplass.

POSIX tråd:

På Linux-plattformer pthread C og C ++ språk standard API for alle typer trådrelaterte funksjoner. Det er også kjent som en POSIX-tråd som lar brukerne lage mange tråder for at samtidige prosesser skal kunne strømme. Det brukes best i flerkjernesystemer eller prosessorer for å implementere tråder på kjernen for å oppnå systemet.

Gjennomføring:

Det er nødvendig å ta med denne pthread.h topptekstfil i skriptet i utgangspunktet. Dette vil hjelpe deg med å bruke funksjonene til pthreads-biblioteket. Følgende kommandoer for å utføre c-filen

$ cc-trådfil.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 for pthread_create:

Den har følgende parametere:

tråd: Dette fungerer som en peker til en usignert heltallverdi. Den returnerer tråd-ID-en til tråden som dannes.

attributter: Denne parameteren fungerer som en peker til en struktur. Den brukes til å definere attributter til en tråd som kan være policyen for planlegging, og stable adresse, etc.

startrutine: Denne parameteren er en peker til en underrutine implementert av tråden.

argument: Denne parameteren er en peker som skal annulleres med forskjellige argumenter til funksjonen som er forhåndsdefinert i begynnelsen av argumentet

Syntaks:

>> int pthread_create
(pthread_t * thread, const pthread_attributes_t * attr, void * (* start_routine) (void *), void * argument);

pthread_exit:

Den brukes til å avslutte eller avslutte en tråd

Parametere for pthread_exit:

Metoden som brukes på slutten av metoden / prosessen, godtar en parameterreval som er en obligatorisk indikator for et helt tall. Den lagrer trådens status slik at tråden avsluttes. Det må være en global variabel. Dette vil tillate at neste tråd i linjen blir med i tråden hvis den er tilgjengelig.

Syntaks:

>> ugyldig pthread_exit (ugyldig * gjengivelse);

pthread_join:

Dette er en funksjon som brukes på ventetiden for avslutningen av tråden.

Parametere for pthread_join:

Parameteren som brukes her er:

thread_id: Det er ID-en for tråden som tråden i linjen venter på.

thread_return: Det er parameteren som fungerer som en peker til det bestemte 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-en til tråden som er i tråd.

Syntaks:

>> pthread_t pthread_self (ugyldig);

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.

Syntaks:

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

pthread_cancel:

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

Parameter for pthread_cancel:

Parameteren som brukes er obligatorisk å oppgi for å kansellere forespørselen.

Syntaks:

>> int pthread_cancel (pthread_t threadName);

pthread_detach:

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

Parameter for pthread_detachr:

Det er parameteren som godtar den obligatoriske parameteren tråd-id. Det er et must å være løsrevet.

Syntaks:

>> int pthread_detach (pthread_t thread);

Eksempelkode:

Her er et eksempel på en kode som viser implementeringen av den ovenfor beskrevne funksjonen. Vi brukte en gcc-kompilator for å kompilere disse funksjonene.

// Program for å vise trådfunksjonene
#inkludere
#inkludere
#inkludere
// Kaller POSIX-tråden, et must-have i UNIX / LINUX-systemer
pthread_t tid [2];
ugyldig * Funksjon (ugyldig * arg)

usignert lang i = 0;
pthread_t id = pthread_self ();
if (pthread_equal (id, tid [0]))
// Betingelse 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++);
retur NULL;

int main (ugyldig)

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 Kunne ikke opprette tråden: [% s]", strerror (feil));
ellers
printf ("\ n Tråden er opprettet vellykket \ n");
// Tråden ble opprettet
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 tilgang til den. Filen som ble lagret av oss, ble kalt test.c. For å få tilgang til det, skriv inn følgende kommando i terminalvinduet:

$ sudo gcc test.c -lpthread

Deretter skriver du følgende kommando for å utføre utgangen:

$ ./en.ute

Forventet utgang:

Resultatet vi fikk som svar på den forrige koden er vist nedenfor:

Konklusjon:

Opplæringen dekket den grunnleggende prosessen med trådopprettelse og diskuterte alle de vanlige metodene i opprettelsen. Tråd er en forekomst av en prosess. Vi gikk deretter brukerne gjennom de berømte parametrene som brukes av hver prosess sammen med syntaksen, slik at de kan bruke dem i dataprogrammene sine. Her delte vi også en eksempelkode som et eksempel 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 preferanser.

Topp 10 spill å spille på Ubuntu
Windows-plattformen har vært en av de dominerende plattformene for spill på grunn av den enorme andelen spill som utvikles i dag for å støtte Windows ...
5 beste arkadespill for Linux
I dag er datamaskiner seriøse maskiner som brukes til spill. Hvis du ikke kan få den nye høye poengsummen, vil du vite hva jeg mener. I dette innlegge...
Kamp for Wesnoth 1.1. 3.6 Utvikling utgitt
Kamp for Wesnoth 1.1. 3.6 utgitt i forrige måned, er den sjette utgivelsen i 1.1. 3.x-serien, og den leverer en rekke forbedringer, spesielt til bruke...