C Programmeren

POSIX-thread met C-programmering

POSIX-thread met C-programmering
Een thread is een kleine instantie die binnen een proces wordt uitgevoerd. Threads worden gecombineerd om een ​​proces te creëren, en ze hebben enkele eigenschappen van het proces; daarom worden ze beschouwd als lichtgewicht processen. Thread is niet onafhankelijk, net als een proces. In plaats daarvan werken ze samen om een ​​proces te compileren en te creëren. Toch heeft een thread, net als een proces, ook zijn eigen pc (programmateller) en een bepaalde registerset samen met stapelruimte.

POSIX-draad:

In Linux-platforms pthreaden de C- en C++-talen de standaard-API voor allerlei soorten threadgerelateerde functies. Het is ook bekend als een POSIX-thread waarmee gebruikers veel threads kunnen maken om gelijktijdige processen te laten stromen. Het wordt het best gebruikt in multi-core systemen of processors om threads op de kernel te implementeren om het systeem te bereiken.

Implementatie:

Het is noodzakelijk om deze pthread op te nemen.h header-bestand in het script aanvankelijk. Dit zal helpen bij het gebruik van de functies van de pthreads-bibliotheek. Om het c-bestand uit te voeren, de volgende opdrachten:

$ cc -pthread-bestand.c

OF

$ cc -lpthread-bestand.c

De functies die in de pthreads-bibliotheek zijn gedefinieerd, kunnen zijn:

pthread_create:

Het wordt gebruikt om een ​​nieuwe thread te maken

Parameters van pthread_create:

Het heeft de volgende parameters:

draad: Dit fungeert als een verwijzing naar een niet-ondertekende integerwaarde. Het retourneert de thread-ID van de thread die is gevormd.

attributen: Deze parameter fungeert als een aanwijzer naar een structuur. Het wordt gebruikt om attributen van een thread te definiëren die het beleid van planning, en stapeladres, enz. kunnen zijn.

start_routine: Deze parameter is een verwijzing naar een subroutine die is geïmplementeerd door de thread.

argument: Deze parameter is een verwijzing naar ongeldig met verschillende argumenten naar de functie die vooraf is gedefinieerd aan het begin van het argument

Syntaxis:

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

pthread_exit:

Het wordt gebruikt om een ​​thread te beëindigen of te beëindigen

Parameters van pthread_exit:

De methode die aan het einde van de methode/het proces wordt gebruikt, accepteert een parameter-retval die een verplichte indicator is voor een geheel getal. Het slaat de status van de thread op zodat de thread wordt beëindigd. Het moet een globale variabele zijn. Hierdoor kan de volgende thread in de rij zich bij de thread voegen als deze beschikbaar is.

Syntaxis:

>> void pthread_exit(void *retval);

pthread_join:

Dit is een functie die wordt gebruikt tijdens het wachten op de beëindiging van de thread.

Parameters voor pthread_join:

De hier gebruikte parameter is:

thread_id: Het is de ID van de thread waarop de thread in de rij wacht.

thread_return: Het is de parameter die fungeert als een verwijzing naar de specifieke locatie waar we de uitgangsstatus hebben gedefinieerd defined.

Syntaxis:

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

pthread_self:

Dit is een methode die wordt gebruikt om de id te krijgen van de thread die momenteel in de rij staat.

Syntaxis:

>> pthread_t pthread_self (ongeldig);

pthread_equal:

Deze methode wordt gebruikt om te vergelijken of twee threads gelijkwaardig zijn of niet. Als twee threads gelijk zijn, retourneert de functie als reactie een andere waarde dan nul.

Syntaxis:

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

pthread_cancel:

Deze methode wordt gebruikt om een ​​verzoek tot annulering te verzenden

Parameter voor pthread_cancel:

De gebruikte parameter moet verplicht worden ingevoerd om het verzoek te annuleren.

Syntaxis:

>> int pthread_cancel (pthread_t threadName);

pthread_detach:

Dit is de methode die wordt gebruikt om een ​​thread te scheiden. Het heeft geen thread nodig om deel te nemen aan de beëindiging. Alle resources die in de thread worden uitgevoerd, worden vrijgegeven zodra de thread wordt losgekoppeld.

Parameter van pthread_detachr:

Het is de parameter die de verplichte parameterthread-id accepteert. Vrijstaand zijn is een must.

Syntaxis:

>> int pthread_detach(pthread_t thread);

Voorbeeldcode:

Hier is een voorbeeldcode om de implementatie van de hierboven beschreven functie te tonen:. We hebben een gcc-compiler gebruikt om deze functies te compileren.

// Programma om de draadfuncties te tonen
#include
#include
#include
// De POSIX-thread aanroepen, een must-have in UNIX/LINUX-systemen
pthread_t tid[2];
void*Functie (ongeldig *arg)

niet-ondertekende lange i = 0;
pthread_t id = pthread_self();
if(pthread_equal(id,tid[0]))
// Voorwaarde dat threads gelijk zijn

printf("\n Eerste thread wordt verwerkt\n");

anders

printf("\n Tweede thread wordt verwerkt \n");

// Draden die worden verwerkt.
voor(i=0; i<(0x255);i++);
retourneer NULL;

int hoofd(void)

int ik = 0;
int fout;
// Een nieuwe thread maken
terwijl ik < 2)

error = pthread_create(&(tid[i]), NULL, &Functie, NULL);
als (fout != 0)
printf("\n Kon de thread :[%s]" niet aanmaken, strerror(error));
anders
printf("\n Discussie is succesvol aangemaakt\n");
// Onderwerp succesvol aangemaakt
i++;

slaap(5);
retourneer 0;

De code is geschreven in een teksteditor; je kunt elke editor gebruiken op basis van je keuze. Sla het dan op op je favoriete locatie.

Het bestand wordt opgeslagen in het computersysteem en wordt vervolgens geopend. Het door ons opgeslagen bestand heette test.c. Om toegang te krijgen, typt u de volgende opdracht in het terminalvenster:

$ sudo gcc-test.c -lpthread

Typ vervolgens de volgende opdracht om de uitvoer uit te voeren:

$ ./een.uit

Verwachte resultaten:

De uitvoer die we hebben gekregen als reactie op de vorige code wordt hieronder weergegeven:

Conclusie:

De tutorial behandelde het basisproces van het maken van threads en besprak alle veelgebruikte methoden bij het maken ervan. Thread is een instantie van een proces. Vervolgens hebben we gebruikers door de beroemde parameters geleid die door elk proces worden gebruikt, samen met de syntaxis, zodat ze deze in hun computerprogramma's kunnen gebruiken. Hier hebben we ook een voorbeeldcode gedeeld als voorbeeld om het idee van het maken van een C-programma in POSIX beter te begrijpen. De compiler die we gebruikten was gcc in het Linux-systeem. Gebruikers kunnen ook kiezen voor een andere compiler op basis van hun voorkeur.

Hoe Xdotool te gebruiken om muisklikken en toetsaanslagen in Linux te stimuleren
Xdotool is een gratis en open source opdrachtregelprogramma voor het simuleren van muisklikken en toetsaanslagen. Dit artikel behandelt een korte hand...
Top 5 ergonomische computermuisproducten voor Linux
Veroorzaakt langdurig computergebruik pijn in uw pols of vingers?? Heb je last van stijve gewrichten en moet je constant de hand schudden?? Voelt u ee...
Hoe de muis- en touchpad-instellingen te wijzigen met Xinput in Linux
De meeste Linux-distributies worden standaard geleverd met de bibliotheek "libinput" om invoergebeurtenissen op een systeem af te handelen. Het kan in...