POSIX nit:
Na Linux platformama, jezici C i C ++ postavljaju standardni API za sve vrste funkcija povezanih s nitima. Poznat je i kao POSIX nit koja korisnicima omogućuje stvaranje mnogih niti za istodobni tok procesa. Najbolje ga je koristiti u višejezgrenim sustavima ili procesorima za implementaciju niti na jezgri za postizanje sustava.
Provedba:
Potrebno je uključiti ovaj pthread.h datoteka zaglavlja u skripti u početku. To će vam pomoći u korištenju funkcija knjižnice pthreads. Da biste izvršili c datoteku, sljedeće naredbe
$ cc -pthread datoteka.c
ILI
$ cc -lpthread datoteka.c
Funkcije definirane u biblioteci pthreads mogu uključivati:
pthread_create:
Koristi se za stvaranje nove niti
Parametri pthread_create:
Ima sljedeće parametre:
nit: To djeluje kao pokazivač na nepotpisanu cijelu vrijednost. Vraća ID niti koja je formirana.
atributi: Ovaj parametar djeluje kao pokazivač na strukturu. Koristi se za definiranje atributa niti koja može biti politika raspoređivanja, adresa sloga itd.
početna_program: Ovaj je parametar pokazivač na potprogram koji implementira nit.
argument: Ovaj je parametar pokazivač na void s različitim argumentima na funkciju unaprijed definiranu na početku argumenta
Sintaksa:
>> int pthread_create(pthread_t * nit, const pthread_attributes_t * attr, void * (* start_routine) (void *), void * argument);
pthread_exit:
Koristi se za završavanje ili završavanje niti
Parametri pthread_exit:
Metoda korištena na kraju metode / postupka prihvaća povrat parametra koji je obvezni pokazatelj cijelog broja. Pohranjuje status niti tako da se nit završava. To mora biti globalna varijabla. To će omogućiti da se sljedeća nit u redu pridruži niti ako je dostupna.
Sintaksa:
>> poništi pthread_exit (void * retval);pthread_join:
Ovo je funkcija koja se koristi u vrijeme čekanja na završetak niti.
Parametri za pthread_join:
Ovdje se koriste parametri:
nit_id: To je ID niti za koji nit u liniji čeka.
return_return: Parametar je taj koji služi kao pokazivač na određeno mjesto na kojem smo definirali status izlaza.
Sintaksa:
>> int pthread_join (pthread_t thread_identification, void ** thread_return);pthread_self:
Ovo je metoda koja se koristi za dobivanje ID-a niti koja je trenutno u redu.
Sintaksa:
>> pthread_t pthread_self (void);pthread_equal:
Ova se metoda koristi za usporedbu u slučaju da su dvije niti jednake ili ne. Ako su dvije niti jednake, tada će funkcija odgovoriti vrijednost različitu od nule.
Sintaksa:
>> int pthread_equal (pthread_t nit1, pthread_t nit2);pthread_cancel:
Ovom se metodom šalje zahtjev za otkazivanje
Parametar za pthread_cancel:
Parametar koji se koristi obavezno se unosi za otkazivanje zahtjeva.
Sintaksa:
>> int pthread_cancel (pthread_t nitName);pthread_detach:
Ovo je metoda koja se koristi za odvajanje niti. Ne treba niti jedna nit koja bi se pridružila prekidu. Svi resursi koji se izvode u niti oslobađaju se čim se nit odvoji.
Parametar pthread_detachr:
Parametar prihvaća obvezni ID niti parametra. Morate se odvojiti.
Sintaksa:
>> int pthread_detach (nit pthread_t);Uzorak koda:
Evo primjera koda koji pokazuje provedbu gore opisane funkcije. Za kompajliranje ovih funkcija koristili smo gcc kompajler.
// Program za prikaz funkcija niti#include
#include
#include
// Pozivanje POSIX niti, koju moraju imati UNIX / LINUX sustavi
pthread_t uredno [2];
void * funkcija (void * arg)
nepotpisano dugo i = 0;
pthread_t id = pthread_self ();
if (pthread_equal (id, tid [0]))
// Uvjet da su niti jednake
printf ("\ n Prva nit se obrađuje \ n");
drugo
printf ("\ n Druga nit se obrađuje \ n");
// Niti se obrađuju.
za (i = 0; i<(0x255);i++);
povratak NULL;
int main (void)
int i = 0;
pogreška int;
// Stvaranje nove niti
dok ja < 2)
pogreška = pthread_create (& (tid [i]), NULL, & Function, NULL);
ako (pogreška != 0)
printf ("\ n Nisam uspio stvoriti nit: [% s]", strerror (pogreška));
drugo
printf ("\ n Tema je uspješno stvorena \ n");
// Tema je uspješno stvorena
i ++;
spavanje (5);
return 0;
Kôd je napisan u uređivaču teksta; možete koristiti bilo koji uređivač prema vašem izboru. Zatim ga spremite na svoje omiljeno mjesto.
Datoteka se sprema u računalni sustav i pristupa joj se. Datoteka koju smo spremili nazvana je test.c. Da biste mu pristupili, upišite sljedeću naredbu u prozor terminala:
$ sudo gcc test.c -lpthread
Dalje, da biste izvršili izlaz, upišite sljedeću naredbu:
$ ./ a.van
Očekivani izlaz:
Izlaz koji smo dobili kao odgovor na prethodni kod prikazan je u nastavku:
Zaključak:
Vodič je obuhvatio osnovni postupak stvaranja niti i raspravio o svim najčešće korištenim metodama u njegovom stvaranju. Nit je instanca procesa. Zatim smo prošetali kroz poznate parametre koje koristi svaki proces zajedno sa sintaksama kako bi ih mogli koristiti u svojim računalnim programima. Ovdje smo također podijelili primjer koda kao uzorak kako bismo bolje razumjeli ideju stvaranja C programa u POSIX-u. Kompajler koji smo koristili bio je gcc u Linux sustavu. Korisnici se mogu odlučiti i za bilo koji drugi kompajler na temelju svojih želja.