C Programmering

POSIX-tråd med C-programmering

POSIX-tråd med C-programmering
En tråd er en lille forekomst, der kører inden for en proces. Tråde kombineres for at skabe en proces, og de har nogle egenskaber ved processen; derfor betragtes de som lette processer. Tråden er ikke uafhængig, ligesom en proces. De arbejder snarere sammen for at kompilere og skabe en proces. Ligesom en proces har en tråd stadig sin egen pc (Program Counter) og et bestemt register sæt sammen med stakplads.

POSIX-tråd:

På Linux-platforme er C- og C ++ -sprogene standard-API til alle slags trådrelaterede funktioner. Det er også kendt som en POSIX-tråd, der giver brugerne mulighed for at oprette mange tråde, så samtidige processer kan strømme. Det bruges bedst i multi-core systemer eller processorer til at implementere tråde på kernen for at opnå systemet.

Implementering:

Det er nødvendigt at medtage denne pthread.h header-fil i scriptet oprindeligt. Dette hjælper med at bruge funktionerne i pthreads-biblioteket. Følgende kommandoer udføres for at udføre c-filen

$ cc-tråd fil.c

ELLER

$ cc -lpthread-fil.c

De funktioner, der er defineret i pthreads-biblioteket, kan omfatte:

pthread_create:

Det bruges til at oprette en ny tråd

Parametre for pthread_create:

Det har følgende parametre:

tråd: Dette fungerer som en markør til en usigneret heltalværdi. Det returnerer tråd-id'et for den tråd, der dannes.

egenskaber: Denne parameter fungerer som en markør til en struktur. Det bruges til at definere attributter for en tråd, der kan være politikken for planlægning og stakadresse osv.

startrutine: Denne parameter er en markør til en underrutine implementeret af tråden.

argument: Denne parameter er en markør, der skal annulleres med forskellige argumenter til den funktion, der er foruddefineret i starten af ​​argumentet

Syntaks:

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

pthread_exit:

Det bruges til at afslutte eller afslutte en tråd

Parametre for pthread_exit:

Metoden, der er brugt i slutningen af ​​metoden / processen, accepterer en parametrering, der er en obligatorisk indikator for et heltal. Den gemmer trådens status således, at tråden slutter. Det skal være en global variabel. Dette giver den næste tråd i linjen mulighed for at slutte sig til tråden, hvis den er tilgængelig.

Syntaks:

>> ugyldigt pthread_exit (ugyldigt * genval);

pthread_join:

Dette er en funktion, der bruges på ventetiden til trådens afslutning.

Parametre for pthread_join:

Den anvendte parameter er:

thread_id: Det er ID'et for den tråd, som tråden i linjen venter på.

thread_return: Det er parameteren, der fungerer som en markør til den bestemte placering, hvor vi har defineret udgangsstatus.

Syntaks:

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

pthread_self:

Dette er en metode, der bruges til at få id'et til tråden, der aktuelt er i linje.

Syntaks:

>> pthread_t pthread_self (ugyldigt);

pthread_equal:

Denne metode bruges til at sammenligne, hvis to tråde er ækvivalente eller ikke. Hvis to tråde er ens, returnerer funktionen en anden værdi end nul som svar.

Syntaks:

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

pthread_cancel:

Denne metode bruges til at sende en anmodning om annullering

Parameter for pthread_cancel:

Den anvendte parameter er obligatorisk at indtaste for at annullere anmodningen.

Syntaks:

>> int pthread_cancel (pthread_t threadName);

pthread_detach:

Dette er metoden, der bruges til at adskille en tråd. Det behøver ikke nogen tråd for at deltage i opsigelsen. Alle ressourcer, der kører i tråden, frigives, så snart tråden er løsrevet.

Parameter for pthread_detachr:

Det er parameteren, der accepterer det obligatoriske parameter-tråd-id. Det er et must at være løsrevet.

Syntaks:

>> int pthread_detach (pthread_t thread);

Prøvekode:

Her er et eksempel på en kode, der viser implementeringen af ​​den ovenfor beskrevne funktion. Vi brugte en gcc-kompilator til at kompilere disse funktioner.

// Program til at vise trådfunktionerne
#omfatte
#omfatte
#omfatte
// At kalde POSIX-tråden, et must-have i UNIX / LINUX-systemer
pthread_t tid [2];
ugyldig * Funktion (ugyldig * arg)

usigneret lang i = 0;
pthread_t id = pthread_self ();
hvis (pthread_equal (id, tid [0]))
// Betingelse for, at tråde er ens

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

andet

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

// Tråde, der behandles.
for (i = 0; i<(0x255);i++);
returnere NULL;

int main (ugyldigt)

int i = 0;
int-fejl;
// Oprettelse af en ny tråd
mens jeg < 2)

error = pthread_create (& (tid [i]), NULL, & Function, NULL);
hvis (fejl != 0)
printf ("\ n Har ikke været i stand til at oprette tråden: [% s]", strerror (fejl));
andet
printf ("\ n Tråd er oprettet med succes \ n");
// Tråd oprettet med succes
i ++;

søvn (5);
returnere 0;

Koden er skrevet i en teksteditor; du kan bruge en hvilken som helst editor baseret på dit valg. Gem det derefter på dit yndlingssted.

Filen gemmes i computersystemet og åbnes derefter. Den fil, vi har gemt, blev navngivet test.c. For at få adgang til det skal du skrive følgende kommando i terminalvinduet:

$ sudo gcc test.c -lpthread

Indtast følgende kommando for at udføre output:

$ ./en.ud

Forventet output:

Det output, vi fik som svar på den forrige kode, vises nedenfor:

Konklusion:

Selvstudiet dækkede den grundlæggende proces til oprettelse af tråde og diskuterede alle de almindeligt anvendte metoder i oprettelsen. Tråd er en forekomst af en proces. Vi gik derefter brugerne gennem de berømte parametre, der blev brugt af hver proces sammen med syntakserne, så de kan gøre brug af dem i deres computerprogrammer. Her delte vi også en eksempelkode som en prøve for bedre at forstå ideen om at oprette et C-program i POSIX. Compileren, vi brugte, var gcc i Linux-systemet. Brugere kan også vælge enhver anden kompilator baseret på deres præference.

Sådan installeres League Of Legends på Ubuntu 14.04
Hvis du er fan af League of Legends, er dette en mulighed for dig at prøvekøre League of Legends. Bemærk, at LOL understøttes på PlayOnLinux, hvis du ...
Installer det nyeste OpenRA-strategispil på Ubuntu Linux
OpenRA er en Libre / Free Real Time Strategy-spilmotor, der genskaber de tidlige Westwood-spil som det klassiske Command & Conquer: Red Alert. Distrib...
Installer nyeste Dolphin Emulator til Gamecube & Wii på Linux
Dolphin Emulator giver dig mulighed for at spille dine valgte Gamecube & Wii-spil på Linux Personal Computers (PC). Som en frit tilgængelig og open s...