Navoj POSIX:
Na platformah Linux jeziki C in C ++ pthread standard API za vse vrste funkcij, povezanih z nitmi. Znan je tudi kot nit POSIX, ki uporabnikom omogoča, da ustvarijo veliko niti za sočasne procese. Najbolje je uporabiti v večjedrnih sistemih ali procesorjih za izvajanje niti v jedru za dosego sistema.
Izvedba:
To pthread je treba vključiti.h datoteko z glavo v skriptu na začetku. To bo pomagalo pri uporabi funkcij knjižnice pthreads. Za izvedbo datoteke c uporabite naslednje ukaze
$ cc -pthread datoteka.c
ALI
$ cc -lpthread datoteka.c
Funkcije, ki so definirane v knjižnici pthreads, lahko vključujejo:
pthread_create:
Uporablja se za ustvarjanje nove niti
Parametri pthread_create:
Ima naslednje parametre:
nit: Ta deluje kot kazalec na celoštevilsko vrednost, ki ni podpisana. Vrne ID niti niti, ki je oblikovana.
lastnosti: Ta parameter deluje kot kazalec na strukturo. Uporablja se za določanje atributov niti, ki so lahko politika načrtovanja, naslov sklada itd.
start_routine: Ta parameter je kazalec na podprogram, ki ga izvaja nit.
prepir: Ta parameter je kazalec za void z različnimi argumenti na funkcijo, vnaprej določeno na začetku argumenta
Sintaksa:
>> int pthread_create(pthread_t * nit, const pthread_attributes_t * attr, void * (* start_routine) (void *), void * argument);
pthread_exit:
Uporablja se za zaključevanje ali konec niti
Parametri pthread_exit:
Metoda, uporabljena na koncu metode / procesa, sprejme povratitev parametra, ki je obvezen indikator za celo število. Shrani stanje niti tako, da se nit konča. To mora biti globalna spremenljivka. To bo omogočilo, da se naslednji nit v vrstici pridruži niti, če je na voljo.
Sintaksa:
>> neveljaven pthread_exit (void * retval);pthread_join:
To je funkcija, ki se uporablja v času čakanja na prekinitev niti.
Parametri za pthread_join:
Tu uporabljeni parametri so:
thread_id: To je ID niti, za katero nit v vrstici čaka.
Naprej Parameter je tisti, ki deluje kot kazalec na določeno lokacijo, kjer smo definirali status izhoda.
Sintaksa:
>> int pthread_join (pthread_t thread_identification, void ** thread_return);pthread_self:
To je metoda, s katero dobimo ID niti, ki je trenutno v vrstici.
Sintaksa:
>> pthread_t pthread_self (void);pthread_equal:
Ta metoda se uporablja za primerjavo, če sta dve niti enakovredni ali ne. Če sta si dve niti enaki, bo funkcija v odgovor vrnila vrednost, ki ni nič.
Sintaksa:
>> int pthread_equal (pthread_t nit1, pthread_t nit2);pthread_cancel:
Ta metoda se uporablja za pošiljanje zahteve za preklic
Parameter za pthread_cancel:
Uporabljeni parameter je obvezno vnesti za preklic zahteve.
Sintaksa:
>> int pthread_cancel (pthread_t threadName);pthread_detach:
To je metoda, ki se uporablja za ločevanje niti. Za zaključek ne potrebuje niti, ki bi se pridružila. Vsi viri, ki se izvajajo v niti, se sprostijo takoj, ko se nit loči.
Parameter pthread_detachr:
Parameter sprejme obvezni ID niti parametra. Treba je ločiti.
Sintaksa:
>> int pthread_detach (nit pthread_t);Vzorčna koda:
Tu je primer kode za prikaz izvajanja zgoraj opisane funkcije. Za prevajanje teh funkcij smo uporabili prevajalnik gcc.
// Program za prikaz funkcij niti#include
#include
#include
// Klicanje niti POSIX, ki jo je treba imeti v sistemih UNIX / LINUX
pthread_t tid [2];
void * funkcija (void * arg)
nepodpisano dolgo i = 0;
pthread_t id = pthread_self ();
če (pthread_equal (id, tid [0]))
// Pogoj za enake niti
printf ("\ n Prva nit je v obdelavi \ n");
drugače
printf ("\ n Druga nit je v obdelavi \ n");
// Niti v obdelavi.
za (i = 0; i<(0x255);i++);
vrni NULL;
int main (void)
int i = 0;
int napaka;
// Ustvarjanje nove niti
medtem ko jaz < 2)
napaka = pthread_create (& (tid [i]), NULL, & Function, NULL);
če (napaka != 0)
printf ("\ n Niti ni bilo mogoče ustvariti niti: [% s]", strerror (napaka));
drugače
printf ("\ n Nit je bila uspešno ustvarjena \ n");
// Nit je bila uspešno ustvarjena
i ++;
spanje (5);
vrnitev 0;
Koda je napisana v urejevalniku besedil; lahko uporabite kateri koli urejevalnik glede na vašo izbiro. Nato ga shranite na svoje najljubše mesto.
Datoteka se shrani v računalniški sistem in nato dostopa. Datoteka, ki smo jo shranili, se je imenovala test.c. Za dostop do njega v okno terminala vnesite naslednji ukaz:
$ sudo gcc test.c -lpthread
Nato za izvedbo izpisa vnesite naslednji ukaz:
$ ./ a.ven
Pričakovani izhod:
Izhod, ki smo ga dobili kot odgovor na prejšnjo kodo, je prikazan spodaj:
Zaključek:
Vadnica je zajela osnovni postopek ustvarjanja niti in razpravljala o vseh najpogostejših metodah pri njenem ustvarjanju. Nit je primerek procesa. Nato smo uporabnike popeljali skozi slavne parametre, ki jih uporablja vsak postopek, skupaj s sintaksami, da jih lahko uporabijo v svojih računalniških programih. Tu smo delili tudi primer kode kot vzorec za boljše razumevanje ideje o ustvarjanju programa C v POSIX-u. Prevajalnik, ki smo ga uporabili, je bil gcc v sistemu Linux. Uporabniki se lahko odločijo za kateri koli drug prevajalnik glede na svoje želje.