C Ohjelmointi

POSIX-lanka C-ohjelmoinnilla

POSIX-lanka C-ohjelmoinnilla
Lanka on pieni prosessissa suoritettava ilmentymä. Langat yhdistyvät prosessin luomiseksi, ja niillä on prosessin joitain ominaisuuksia; siksi niitä pidetään kevyinä prosesseina. Lanka ei ole itsenäinen, aivan kuten prosessi. Pikemminkin he työskentelevät yhdessä kokoamaan ja luomaan prosessin. Silti, aivan kuten prosessissa, säikeellä on myös oma tietokone (ohjelmalaskuri) ja tietty rekisteri, joka on asetettu pinotilan kanssa.

POSIX-lanka:

Linux-käyttöjärjestelmissä C- ja C ++ -kielet pthread-standardin API: n kaikenlaisille ketjuihin liittyville toiminnoille. Se tunnetaan myös POSIX-ketjuna, jonka avulla käyttäjät voivat luoda useita ketjuja samanaikaisille prosesseille. Sitä käytetään parhaiten moniydinsysteemeissä tai prosessoreissa ketjujen toteuttamiseksi ytimessä järjestelmän saavuttamiseksi.

Toteutus:

Tämä pthread on välttämätön.h otsikkotiedosto komentosarjassa. Tämä auttaa käyttämään pthreads-kirjaston toimintoja. Suorita c-tiedosto seuraavilla komennoilla

$ cc -säikeistiedosto.c

TAI

$ cc -lpthread-tiedosto.c

Pthreads-kirjastossa määritetyt toiminnot voivat sisältää:

pthread_create:

Sitä käytetään uuden ketjun luomiseen

Parametrit pthread_create:

Sillä on seuraavat parametrit:

lanka: Tämä toimii osoittimena allekirjoittamattomalle kokonaisluvulle. Se palauttaa muodostetun langan ketjutunnuksen.

määritteet: Tämä parametri toimii rakenteen osoittimena. Sitä käytetään määrittelemään ketjun attribuutit, jotka voivat olla ajoituspolitiikkaa ja pinon osoitetta jne.

start_routine: Tämä parametri on osoitus langan toteuttamaan aliohjelmaan.

Perustelu: Tämä parametri on osoitus mitätöidä eri argumenteilla kuin argumentti, joka on määritelty argumentin alussa

Syntaksi:

>> int pthread_create
(pthread_t * säie, const pthread_attributes_t * attr, void * (* start_routine) (void *), void * argumentti);

pthread_exit:

Sitä käytetään langan päättämiseen tai lopettamiseen

Parametrit pthread_exit:

Menetelmän / prosessin lopussa käytetty menetelmä hyväksyy parametrin uudelleenkäynnistyksen, joka on pakollinen indikaattori kokonaisluvulle. Se tallentaa langan tilan siten, että ketju päättyy. Sen on oltava globaali muuttuja. Tämä sallii seuraavan rivin langan liittyä ketjuun, jos se on käytettävissä.

Syntaksi:

>> void pthread_exit (void * retval);

pthread_join:

Tätä toimintoa käytetään odottamaan langan päättymistä.

Parametrit pthread_join:

Tässä käytetty parametri on:

thread_id: Se on sen langan tunnus, jota jonossa oleva säie odottaa.

thread_return: Se on parametri, joka toimii osoittimena tiettyyn paikkaan, jossa olemme määrittäneet poistumistilan.

Syntaksi:

>> int pthread_join (pthread_t langan tunnistus, mitätön ** thread_return);

pthread_self:

Tätä menetelmää käytetään saamaan tällä hetkellä linjassa olevan ketjun tunnus.

Syntaksi:

>> pthread_t pthread_self (mitätön);

pthread_equal:

Tätä menetelmää käytetään vertailuun, jos kaksi säiettä on samanarvoinen tai ei. Jos kaksi säiettä on samanlaisia, funktio palauttaa vastauksena muun arvon kuin nollan.

Syntaksi:

>> int pthread_equal (pthread_t thread1, pthread_t thread2);

pthread_cancel:

Tätä tapaa käytetään peruutuspyynnön lähettämiseen

Parametri pthread_cancel:

Käytetty parametri on pakollinen, jotta pyyntö voidaan peruuttaa.

Syntaksi:

>> int pthread_cancel (pthread_t threadName);

pthread_detach:

Tätä menetelmää käytetään langan erottamiseen. Se ei tarvitse mitään ketjua liittyäkseen päätökseen. Kaikki säikeessä käynnissä olevat resurssit vapautetaan heti, kun säie irtoaa.

Parametri pthread_detachr:

Parametri hyväksyy pakollisen parametrilanka-idean. Se on pakko irrottaa.

Syntaksi:

>> int pthread_detach (pthread_t-lanka);

Näytekoodi:

Tässä on esimerkkikoodi, joka näyttää yllä kuvatun toiminnon toteutuksen. Käytimme gcc-kääntäjää näiden toimintojen kääntämiseen.

// Ohjelma näyttää ketjutoiminnot
#sisältää
#sisältää
#sisältää
// Soitetaan POSIX-säikeelle, joka on pakollinen UNIX / LINUX-järjestelmissä
pthread_t tid [2];
void * Funktio (void * arg)

allekirjoittamaton pitkä i = 0;
pthread_t id = pthread_self ();
if (pthread_equal (id, tid [0]))
// Ehto säikeille, jotka ovat samat

printf ("\ n Ensimmäistä ketjua käsitellään \ n");

muu

printf ("\ n Toista ketjua käsitellään \ n");

// Langat käsitellään.
varten (i = 0; i<(0x255);i++);
paluu NULL;

int main (mitätön)

int i = 0;
int-virhe;
// Uuden ketjun luominen
sillä aikaa kun minä < 2)

virhe = pthread_create (& (tid [i]), NULL, & Function, NULL);
jos (virhe != 0)
printf ("\ n Ei onnistunut luomaan ketjua: [% s]", virhe (virhe));
muu
printf ("\ n säie on luotu onnistuneesti \ n");
// Viestiketju luotiin
i ++;

uni (5);
paluu 0;

Koodi kirjoitetaan tekstieditorissa; voit käyttää mitä tahansa editoria valintasi mukaan. Tallenna se sitten suosikkipaikkaasi.

Tiedosto tallennetaan tietokonejärjestelmään ja sitä käytetään sitten. Meidän tallentamamme tiedosto nimettiin testiksi.c. Voit käyttää sitä kirjoittamalla seuraava komennon pääteikkunaan:

$ sudo gcc -testi.c -lanka

Suorita seuraava lähtö kirjoittamalla seuraava komento:

$ ./ a.ulos

Odotettu tuotos:

Tulos, jonka saimme vastauksena edelliseen koodiin, näkyy alla:

Päätelmä:

Opetusohjelma käsitteli ketjun luomisen perusprosessia ja käsitteli kaikkia sen luomisessa yleisesti käytettyjä menetelmiä. Lanka on prosessin esiintymä. Opastimme sitten käyttäjät läpi jokaisen prosessin käyttämät kuuluisat parametrit ja syntaksit, jotta he voivat käyttää niitä tietokoneohjelmissaan. Täällä jaoimme myös esimerkkikoodin esimerkkinä ymmärtääksemme paremmin ajatuksen C-ohjelman luomisesta POSIXissa. Kääntäjä, jota käytimme, oli gcc Linux-järjestelmässä. Käyttäjät voivat valita minkä tahansa muun kääntäjän myös mieltymystensä perusteella.

Parhaat Linux-peliohjaimen kartoitussovellukset
Jos haluat pelata pelejä Linuxissa peliohjaimella tyypillisen näppäimistön ja hiiren syöttöjärjestelmän sijaan, on sinulle hyödyllisiä sovelluksia. Mo...
Hyödyllisiä työkaluja Linux-pelaajille
Jos haluat pelata pelejä Linuxissa, on todennäköistä, että olet käyttänyt sovelluksia ja apuohjelmia, kuten Wine, Lutris ja OBS Studio, pelikokemuksen...
HD Remastered Games for Linux that Never had a Linux Release Earlier
Many game developers and publishers are coming up with HD remaster of old games to extend the life of franchise, please fans requesting compatibility ...