C Programovanie

POSIX vlákno s C programovaním

POSIX vlákno s C programovaním
Vlákno je malá inštancia bežiaca v rámci procesu. Vlákna sa spoja a vytvoria proces, ktorý má niektoré vlastnosti procesu; preto sa považujú za ľahké procesy. Vlákno nie je nezávislé, rovnako ako proces. Radšej spolupracujú na zostavení a vytvorení procesu. Rovnako ako proces má vlákno rovnako ako PC aj svoj vlastný počítač (Program Counter) a konkrétny register spolu s priestorom zásobníka.

POSIX vlákno:

Na platformách Linux je štandardným rozhraním API pthread pre jazyky C a C ++ všetky druhy funkcií súvisiacich s vláknami. Je tiež známy ako vlákno POSIX, ktoré umožňuje používateľom vytvárať veľa vlákien pre tok súčasných procesov. Najlepšie sa používa vo viacjadrových systémoch alebo procesoroch na implementáciu vlákien do jadra, aby sa dosiahol systém.

Realizácia:

Je potrebné zahrnúť toto vlákno.h hlavičkový súbor v skripte spočiatku. To pomôže pri používaní funkcií knižnice pthreads. Na vykonanie súboru c použite nasledujúce príkazy

$ cc -pthread súbor.c

ALEBO

$ cc -lpthread súbor.c

Medzi funkcie, ktoré sú definované v knižnici pthreads, patria:

pthread_create:

Používa sa na vytvorenie nového vlákna

Parametre pthread_create:

Má nasledujúce parametre:

vlákno: Funguje to ako ukazovateľ na celočíselnú hodnotu bez znamienka. Vráti ID vlákna vytvoreného vlákna.

atribúty: Tento parameter slúži ako ukazovateľ na štruktúru. Používa sa na definovanie atribútov vlákna, ktoré môžu byť zásadou plánovania a adresy zásobníka atď.

start_routine: Tento parameter je ukazovateľ na podprogram implementovaný vláknom.

argument: Tento parameter predstavuje ukazovateľ neplatnosti s rôznymi argumentmi na funkciu preddefinovanú na začiatku argumentu

Syntax:

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

pthread_exit:

Používa sa na ukončenie alebo ukončenie vlákna

Parametre pthread_exit:

Metóda použitá na konci metódy / procesu akceptuje retenciu parametra, ktorá je povinným indikátorom na celé číslo. Ukladá stav vlákna tak, že sa vlákno končí. Musí to byť globálna premenná. Toto umožní ďalšiemu vláknu v rade pripojiť sa k vláknu, ak je k dispozícii.

Syntax:

>> void pthread_exit (void * retval);

pthread_join:

Toto je funkcia používaná v čase čakania na ukončenie vlákna.

Parametre pre pthread_join:

Tu sa používajú tieto parametre:

ID vlákna: Je to ID vlákna, na ktoré vlákno v rade čaká.

thread_return: Je to parameter, ktorý slúži ako ukazovateľ na konkrétne miesto, kde sme definovali stav ukončenia.

Syntax:

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

pthread_self:

Toto je metóda použitá na získanie ID vlákna, ktoré je momentálne v rade.

Syntax:

>> pthread_t pthread_self (void);

pthread_equal:

Táto metóda sa používa na porovnanie v prípade, že dve vlákna sú rovnocenné alebo nie. Ak sú dve vlákna podobné, potom funkcia vráti ako odpoveď hodnotu inú ako nula.

Syntax:

>> int pthread_equal (pthread_t vlákno1, pthread_t vlákno2);

pthread_cancel:

Táto metóda sa používa na odoslanie žiadosti o zrušenie

Parameter pre pthread_cancel:

Použitý parameter je potrebné zadať na zrušenie požiadavky.

Syntax:

>> int pthread_cancel (pthread_t threadName);

pthread_detach:

Toto je metóda, ktorá sa používa na oddelenie vlákna. Na pripojenie k ukončeniu nepotrebuje žiadne vlákno. Všetky prostriedky bežiace vo vlákne sa uvoľnia hneď po odpojení vlákna.

Parameter pthread_detachr:

Je to parameter, ktorý akceptuje povinné ID vlákna vlákna. Je nevyhnutné byť odlúčený.

Syntax:

>> int pthread_detach (pthread_t vlákno);

Ukážkový kód:

Tu je ukážkový kód na zobrazenie implementácie vyššie popísanej funkcie. Na kompiláciu týchto funkcií sme použili kompilátor gcc.

// Program na zobrazenie funkcií vlákna
#include
#include
#include
// Volanie vlákna POSIX, ktoré musí mať v systémoch UNIX / LINUX
pthread_t tid [2];
void * Function (void * arg)

nepodpísané dlhé i = 0;
pthread_t id = pthread_self ();
if (pthread_equal (id, tid [0]))
// Podmienka pre rovnaké vlákna

printf ("\ n Prvé vlákno sa spracováva \ n");

inak

printf ("\ n Druhé vlákno sa spracováva \ n");

// Vlákna sa spracovávajú.
pre (i = 0; i<(0x255);i++);
návrat NULL;

int main (void)

int i = 0;
chyba int;
// Vytvorenie nového vlákna
kým < 2)

chyba = pthread_create (& (tid [i]), NULL, & funkcia, NULL);
ak (chyba != 0)
printf ("\ n Nepodarilo sa vytvoriť vlákno: [% s]", strerror (chyba));
inak
printf ("\ n Vlákno bolo úspešne vytvorené \ n");
// Vlákno bolo úspešne vytvorené
i ++;

spánok (5);
návrat 0;

Kód je napísaný v textovom editore; môžete použiť ľubovoľný editor podľa vášho výberu. Potom ho uložte na svoje obľúbené miesto.

Súbor sa uloží do počítačového systému a potom sa k nemu pristupuje. Nami uložený súbor dostal názov test.c. Prístup k nej získate zadaním nasledujúceho príkazu do okna terminálu:

$ sudo gcc test.c -lpthread

Ďalej na vykonanie výstupu zadajte nasledujúci príkaz:

$ ./ a.von

Očakávaný výstup:

Výstup, ktorý sme dostali v reakcii na predchádzajúci kód, je uvedený nižšie:

Záver:

Výukový program sa venoval základnému procesu vytvárania vlákien a diskutoval o všetkých bežne používaných metódach jeho vytvárania. Vlákno je inštanciou procesu. Potom sme používateľov prevedli slávnymi parametrami používanými každým procesom spolu so syntaxami, aby ich mohli využiť vo svojich počítačových programoch. Tu sme tiež zdieľali ukážkový kód ako ukážku, aby sme lepšie pochopili myšlienku vytvorenia programu C v POSIXe. Kompilátor, ktorý sme použili, bol gcc v systéme Linux. Používatelia sa môžu rozhodnúť aj pre ľubovoľného iného kompilátora na základe svojich preferencií.

Napodobňovanie kliknutí myšou vznášaním sa pomocou myši bez myši vo Windows 10
Používanie myši alebo klávesnice v nesprávnom postoji k nadmernému používaniu môže mať za následok veľa zdravotných problémov vrátane napätia, syndróm...
Pridajte gestá myši do systému Windows 10 pomocou týchto bezplatných nástrojov
V posledných rokoch sa počítače a operačné systémy veľmi vyvinuli. Boli časy, keď používatelia museli prechádzať správcami súborov pomocou príkazov. R...
Ovládajte a spravujte pohyb myši medzi viacerými monitormi v systéme Windows 10
Správca myši s duálnym displejom umožňuje ovládať a konfigurovať pohyb myši medzi viacerými monitormi spomalením jeho pohybu blízko hranice. Windows 1...