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í.