C Programiranje

Nit POSIX s programiranjem C

Nit POSIX s programiranjem C
Nit je majhen primerek, ki se izvaja v procesu. Niti se združijo, da ustvarijo postopek in imajo nekatere lastnosti procesa; zato veljajo za lahke procese. Nit ni neodvisen, tako kot postopek. Namesto tega sodelujejo pri sestavljanju in ustvarjanju procesa. Kljub temu ima tako kot postopek tudi nit svoj računalnik (števec programov) in določen register, skupaj s prostorom sklada.

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.

Najboljši Linux Distros za igre na srečo v letu 2021
Operacijski sistem Linux je daleč od prvotnega, preprostega, strežniškega videza. Ta OS se je v zadnjih letih izjemno izboljšal in se je zdaj razvil v...
Kako zajeti in pretakati svojo igralno sejo v Linuxu
V preteklosti je bilo igranje iger le hobi, sčasoma pa je igralniška industrija zabeležila veliko rast glede tehnologije in števila igralcev. Občinstv...
Najboljše igre z ročnim sledenjem
Oculus Quest je pred kratkim predstavil odlično idejo ročnega sledenja brez krmilnikov. Z vedno večjim številom iger in dejavnosti, ki izvajajo podpor...