C Programmeerimine

POSIX lõime C-programmeerimisega

POSIX lõime C-programmeerimisega
Lõng on protsessis töötav väike eksemplar. Teemad ühendavad protsessi loomiseks ja neil on protsessi mõned omadused; seetõttu peetakse neid kergekaalulisteks protsessideks. Lõng pole sõltumatu, täpselt nagu protsess. Pigem teevad nad protsessi koostamiseks ja loomiseks koostööd. Kuid nagu protsessil, on ka lõimel oma arvuti (programmiloendur) ja konkreetne register koos virnaruumiga.

POSIX-niit:

Linuxi platvormidel ühendavad C ja C ++ keel standardse API igasuguste lõimega seotud funktsioonide jaoks. Seda tuntakse ka kui POSIX-lõime, mis võimaldab kasutajatel luua palju lõime samaaegsete protsesside voolamiseks. Seda on kõige parem kasutada mitmetuumalistes süsteemides või protsessorites, et rakendada tuuma lõime süsteemi saavutamiseks.

Rakendamine:

See pthread on vajalik lisada.h päisefail algselt skriptis. See aitab kasutada pthreadsi teegi funktsioone. C-faili käivitamiseks toimige järgmiselt

$ cc -pthread fail.c

VÕI

$ cc -lpthread fail.c

Pthreadsi teegis määratletud funktsioonid võivad hõlmata järgmist:

pthread_create:

Seda kasutatakse uue lõime loomiseks

Pthread_create parameetrid:

Sellel on järgmised parameetrid:

niit: See toimib allkirjastamata täisarvu osutajana. See tagastab moodustatud lõime lõime ID.

atribuudid: See parameeter toimib struktuuri osutajana. Seda kasutatakse lõime atribuutide määratlemiseks, mis võivad olla ajastamise ja virna aadressi poliitikad jne.

algusruut: See parameeter osutab lõime rakendatud alamprogrammile.

argument: See parameeter osutab argumendi alguses eelnevalt määratud funktsioonile erinevate argumentidega tühistamiseks

Süntaks:

>> int pthread_create
(pthread_t * niit, const pthread_attributes_t * attr, void * (* start_routine) (void *), void * argument);

pthread_exit:

Seda kasutatakse lõime lõpetamiseks või lõpetamiseks

Pthread_exit parameetrid:

Meetodi / protsessi lõpus kasutatud meetod aktsepteerib parameetri taaskäivitamist, mis on täisarvu kohustuslik näitaja. See salvestab lõime oleku nii, et lõng lõpeb. See peab olema globaalne muutuja. See võimaldab järgmisel lõimal liituda lõimega, kui see on saadaval.

Süntaks:

>> void pthread_exit (void * retval);

pthread_join:

Seda funktsiooni kasutatakse lõime lõpetamise ootamise ajal.

Pthread_join parameetrid:

Siin kasutatakse parameetrit:

thread_id: See on selle lõime ID, mida lõime reas ootab.

thread_return: See on parameeter, mis toimib viitena konkreetsele asukohale, kus oleme määratlenud väljumisoleku.

Süntaks:

>> int pthread_join (pthread_t thread_identification, void ** thread_return);

pthread_self:

See on meetod, mida kasutatakse hetkel joone id-i saamiseks.

Süntaks:

>> pthread_t pthread_self (tühine);

pthread_equal:

Seda meetodit kasutatakse võrdlemiseks juhul, kui kaks lõime on samaväärsed või mitte. Kui kaks lõime on ühesugused, tagastab funktsioon vastuseks muu väärtuse kui null.

Süntaks:

>> int pthread_equal (pthread_t lõime1, pthread_t lõime2);

pthread_cancel:

Seda meetodit kasutatakse tühistamistaotluse saatmiseks

Parameeter pthread_cancel:

Taotluse tühistamiseks on vajalik parameeter sisestada.

Süntaks:

>> int pthread_cancel (pthread_t threadName);

pthread_detach:

Seda meetodit kasutatakse lõime eraldamiseks. See ei vaja lõpetamiseks liitumiseks ühtegi lõime. Kõik lõimes töötavad ressursid vabastatakse kohe, kui niit on lahti ühendatud.

Parameeter pthread_detachr:

See parameeter aktsepteerib kohustusliku parameetri lõime ID. See peab olema eraldatud.

Süntaks:

>> int pthread_detach (lõime pthread_t);

Näidiskood:

Siin on näide koodist, mis näitab ülalkirjeldatud funktsiooni rakendamist. Nende funktsioonide kompileerimiseks kasutasime gcc kompilaatorit.

// Programm lõime funktsioonide kuvamiseks
# kaasata
# kaasata
# kaasata
// POSIX-lõime kutsumine, must-have UNIX / LINUX süsteemides
pthread_t tid [2];
void * Funktsioon (void * arg)

allkirjastamata pikk i = 0;
pthread_t id = pthread_self ();
kui (pthread_equal (id, tid [0]))
// Tingimus, et niidid oleksid võrdsed

printf ("\ n Esimest lõime töödeldakse \ n");

muud

printf ("\ n Teist lõime töödeldakse \ n");

// Töödeldavad lõimed.
jaoks (i = 0; i<(0x255);i++);
return NULL;

int main (tühine)

int i = 0;
int viga;
// Uue lõime loomine
kuni ma < 2)

tõrge = pthread_create (& (tid [i]), NULL ja & Function, NULL);
kui (viga != 0)
printf ("\ n Teemat ei õnnestunud luua: [% s]", strerror (tõrge));
muud
printf ("\ n lõime loomine õnnestus \ n");
// Lõng edukalt loodud
i ++;

uni (5);
tagastama 0;

Kood kirjutatakse tekstiredaktoris; võite kasutada mis tahes redaktorit vastavalt teie valikule. Seejärel salvestage see oma lemmikkohta.

Fail salvestatakse arvutisüsteemi ja seejärel avatakse see. Meie salvestatud faili nimi oli test.c. Sellele juurdepääsu saamiseks sisestage terminaliaknas järgmine käsk:

$ sudo gcc test.c -lõng

Järgmisena tippige väljundi käivitamiseks järgmine käsk:

$ ./ a.välja

Eeldatav väljund:

Väljund, mille saime vastuseks eelmisele koodile, on näidatud allpool:

Järeldus:

Õpetus hõlmas lõime loomise põhiprotsessi ja käsitles kõiki selle loomisel tavaliselt kasutatavaid meetodeid. Teema on protsessi eksemplar. Seejärel tutvustasime kasutajatel kuulsaid parameetreid, mida iga protsess kasutas koos süntaksitega, et nad saaksid neid oma arvutiprogrammides kasutada. Jagasime siin näidisena ka näidiskoodi, et paremini mõista ideed luua C-programm POSIX-is. Meie kasutatud kompilaator oli Linuxi süsteemis gcc. Kasutajad saavad oma eelistuste põhjal valida ka mõne muu kompilaatori.

Kuidas näidata FPS-loendurit Linuxi mängudes
Linuxi mängimine sai suure tõuke, kui Valve teatas Steam-kliendi ja nende mängude Linuxi toest 2012. aastal. Sellest ajast peale on paljud AAA- ja ind...
Sid Meieri Civilization VI allalaadimine ja mängimine Linuxis
Sissejuhatus mängu Civilization 6 on kaasaegne kontseptsioon, mis tutvustati Age of Empires mängude sarjas. Idee oli üsna lihtne; alustaksite kõige põ...
Kuidas installida ja mängida Doomi Linuxis
Doomi sissejuhatus Doom-seeria sai alguse 90ndatel pärast algse Doomi väljaandmist. See oli kohene hitt ja sellest ajast alates on mänguseeria pälvinu...