C Programiranje

POSIX navoj s C programiranjem

POSIX navoj s C programiranjem
Nit je mala instanca koja se izvodi u procesu. Niti se kombiniraju kako bi stvorili proces i imaju neka svojstva procesa; stoga se smatraju laganim procesima. Konac nije neovisan, baš poput procesa. Umjesto da zajedno rade na sastavljanju i stvaranju procesa. Ipak, baš kao i postupak, nit također ima svoje računalo (Brojač programa) i određeni registar postavljen zajedno s prostorom sloga.

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.

Lijevi gumb miša ne radi u sustavu Windows 10
Ako s prijenosnim računalom ili stolnim računalom koristite namjenski miš, ali lijevi gumb miša ne radi u sustavu Windows 10/8/7 iz nekog razloga evo ...
Pokazivač skače ili se slučajno pomiče dok tipkate u sustavu Windows 10
Ako ustanovite da kursor miša sam skače ili se pomiče automatski, nasumično dok tipkate u Windows prijenosnom računalu ili računalu, neki od ovih prij...
Kako obrnuti smjer pomicanja miša i dodirnih pločica u sustavu Windows 10
Miš i Dodirna pločaRačunarstvo ne samo da olakšava, već i učinkovitije i oduzima puno vremena. Ne možemo zamisliti život bez ovih uređaja, ali činjeni...