C Programmering

POSIX-tråd med C-programmering

POSIX-tråd med C-programmering
En tråd är en liten instans som körs i en process. Trådar kombineras för att skapa en process, och de har vissa egenskaper hos processen; därför anses de vara lätta processer. Tråden är inte oberoende, precis som en process. Snarare arbetar de tillsammans för att sammanställa och skapa en process. Precis som en process har en tråd också en egen dator (Program Counter) och ett visst registeruppsättning tillsammans med stapelutrymme.

POSIX tråd:

På Linux-plattformar är C och C ++ språk pthread standard API för alla typer av trådrelaterade funktioner. Det är också känt som en POSIX-tråd som tillåter användare att skapa många trådar för att samtidiga processer ska flöda. Det används bäst i flerkärniga system eller processorer för att implementera trådar i kärnan för att uppnå systemet.

Genomförande:

Det är nödvändigt att inkludera denna pthread.h-huvudfilen i skriptet från början. Detta hjälper till att använda funktionerna i pthreads-biblioteket. Följande kommandon för att köra c-filen

$ cc-trådfil.c

ELLER

$ cc -lpthread-fil.c

Funktionerna som definieras i pthreads-biblioteket kan inkludera:

pthread_create:

Den används för att skapa en ny tråd

Parametrar för pthread_create:

Den har följande parametrar:

tråd: Detta fungerar som en pekare till ett osignerat heltalvärde. Den returnerar tråd-id för den tråd som bildas.

attribut: Denna parameter fungerar som en pekare till en struktur. Den används för att definiera attribut för en tråd som kan vara principen för schemaläggning, och stapla adress, etc.

startrutin: Denna parameter är en pekare till en underrutin implementerad av tråden.

argument: Denna parameter är en pekare som ska ogiltigförklaras med olika argument till den funktion som fördefinierats i början av argumentet

Syntax:

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

pthread_exit:

Den används för att avsluta eller avsluta en tråd

Parametrar för pthread_exit:

Metoden som används i slutet av metoden / processen accepterar en parameteråterställning som är en obligatorisk indikator för ett heltal. Den lagrar trådens status så att tråden avslutas. Det måste vara en global variabel. Detta gör att nästa tråd i raden kan gå med i tråden om den är tillgänglig.

Syntax:

>> ogiltig pthread_exit (ogiltig * återval);

pthread_join:

Det här är en funktion som används vid väntetiden för trådens avslutning.

Parametrar för pthread_join:

Parametern som används här är:

tråd_id: Det är ID för den tråd som tråden i raden väntar på.

thread_return: Det är parametern som fungerar som en pekare till den specifika plats där vi har definierat utgångsstatus.

Syntax:

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

pthread_self:

Detta är en metod som används för att få id för tråden som för närvarande är i linje.

Syntax:

>> pthread_t pthread_self (ogiltigt);

pthread_equal:

Denna metod används för att jämföra om två trådar är ekvivalenta eller inte. Om två trådar är lika, returnerar funktionen ett annat värde än noll som svar.

Syntax:

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

pthread_cancel:

Denna metod används för att skicka en begäran om avbokning

Parameter för pthread_cancel:

Parametern som används är obligatorisk att ange för att avbryta begäran.

Syntax:

>> int pthread_cancel (pthread_t threadName);

pthread_detach:

Detta är metoden som används för att separera en tråd. Det behöver ingen tråd för att gå med på uppsägningen. Alla resurser som körs i tråden släpps så snart tråden lossnar.

Parameter för pthread_detachr:

Det är parametern som accepterar det obligatoriska parametertråd-id: t. Det är ett måste att vara fristående.

Syntax:

>> int pthread_detach (pthread_t thread);

Exempelkod:

Här är en exempelkod för att visa implementeringen av den ovan beskrivna funktionen. Vi använde en gcc-kompilator för att kompilera dessa funktioner.

// Program för att visa trådfunktionerna
#omfatta
#omfatta
#omfatta
// Att ringa POSIX-tråden, ett måste i UNIX / LINUX-system
pthread_t tid [2];
ogiltig * Funktion (ogiltig * arg)

osignerad lång i = 0;
pthread_t id = pthread_self ();
if (pthread_equal (id, tid [0]))
// Villkor för att trådar är lika

printf ("\ n Första tråden bearbetas \ n");

annan

printf ("\ n Andra tråden bearbetas \ n");

// Trådar som bearbetas.
för (i = 0; i<(0x255);i++);
returnera NULL;

int main (ogiltigt)

int i = 0;
int-fel;
// Skapa en ny tråd
medan jag < 2)

error = pthread_create (& (tid [i]), NULL, & Function, NULL);
om (fel != 0)
printf ("\ n Det gick inte att skapa tråden: [% s]", strerror (fel));
annan
printf ("\ n Tråd har skapats framgångsrikt \ n");
// Tråden skapades framgångsrikt
i ++;

sömn (5);
returnera 0;

Koden är skriven i en textredigerare; du kan använda vilken redigerare som helst baserat på ditt val. Spara den sedan på din favoritplats.

Filen sparas i datorsystemet och nås. Den fil som vi sparade fick namnet test.c. För att komma åt det, skriv följande kommando i terminalfönstret:

$ sudo gcc-test.c -lpthread

Nästa, för att utföra utdata, skriv följande kommando:

$ ./ a.ut

Förväntad produktion:

Utgången som vi fick som svar på den föregående koden visas nedan:

Slutsats:

Självstudien behandlade den grundläggande processen för trådskapande och diskuterade alla vanliga metoder vid skapandet. Tråd är en instans av en process. Vi följde sedan användarna genom de berömda parametrarna som används av varje process tillsammans med syntaxerna så att de kan använda dem i sina datorprogram. Här delade vi också en exempelkod som ett exempel för att bättre förstå idén att skapa ett C-program i POSIX. Kompilatorn vi använde var gcc i Linux-systemet. Användare kan välja vilken annan kompilator som helst baserat på deras preferenser.

Mus Lägg till musgester i Windows 10 med dessa gratisverktyg
Lägg till musgester i Windows 10 med dessa gratisverktyg
Under senare år har datorer och operativsystem utvecklats kraftigt. Det fanns en tid då användare var tvungna att använda kommandon för att navigera g...
Mus Kontrollera och hantera musrörelser mellan flera skärmar i Windows 10
Kontrollera och hantera musrörelser mellan flera skärmar i Windows 10
Dual Display Mouse Manager låter dig kontrollera och konfigurera musrörelser mellan flera skärmar genom att sakta ner dess rörelser nära gränsen. Wind...
Mus WinMouse låter dig anpassa och förbättra muspekarens rörelse på Windows PC
WinMouse låter dig anpassa och förbättra muspekarens rörelse på Windows PC
Om du vill förbättra standardfunktionerna för din muspekare, använd freeware WinMouse. Det lägger till fler funktioner som hjälper dig att få ut det m...