C programavimas

POSIX gija su C programavimu

POSIX gija su C programavimu
Gija yra nedidelis egzempliorius, vykdomas procese. Siūlai sujungiami, kad būtų sukurtas procesas, ir jie turi tam tikras proceso savybes; todėl jie laikomi lengvais procesais. Siūlas nėra nepriklausomas, kaip ir procesas. Jie veikiau kartu rengia ir kuria procesą. Vis tiek, kaip ir procesas, gija taip pat turi savo asmeninį kompiuterį (programų skaitiklį) ir tam tikrą registrą, nustatytą kartu su kaupo vieta.

POSIX sriegis:

„Linux“ platformose C ir C ++ kalbos sukuria standartinę API visoms su gijomis susijusioms funkcijoms. Jis taip pat žinomas kaip POSIX gija, leidžianti vartotojams sukurti daug gijų, kad procesai vyktų vienu metu. Geriausia jį naudoti daugiagyslėse sistemose ar procesoriuose, kad branduolys būtų įdiegtas, kad būtų pasiekta sistema.

Įgyvendinimas:

Būtina įtraukti šį pthread.h antraštės failas scenarijuje iš pradžių. Tai padės naudotis pthreads bibliotekos funkcijomis. Norėdami vykdyti c failą, atlikite šias komandas

$ cc -pthread failas.c

ARBA

$ cc -lpthread failas.c

Pthreads bibliotekoje apibrėžtos funkcijos gali apimti:

pthread_create:

Jis naudojamas kuriant naują giją

„Pthread_create“ parametrai:

Jis turi šiuos parametrus:

sriegis: Tai veikia kaip nepasirašyto sveikojo skaičiaus reikšmė. Jis grąžina suformuoto gijos gijos ID.

atributai: Šis parametras veikia kaip struktūros rodyklė. Jis naudojamas apibrėžti gijos atributus, kurie gali būti planavimo politika, kamino adresas ir kt.

start_routine: Šis parametras yra gairės įdiegto paprogramės žymeklis.

argumentas: Šis parametras yra negaliojančio žymeklis su skirtingais argumentais į funkciją, iš anksto apibrėžtą argumento pradžioje

Sintaksė:

>> int pthread_create
(pthread_t * thread, const pthread_attributes_t * attr, void * (* start_routine) (negaliojantis *), void * argumentas);

pthread_exit:

Jis naudojamas gijai nutraukti arba nutraukti

„Pthread_exit“ parametrai:

Metodo / proceso pabaigoje naudojamas metodas priima parametro pakartotinį vertinimą, kuris yra privalomas sveiko skaičiaus rodiklis. Jis išsaugo gijos būseną taip, kad gija nutrūktų. Tai turi būti visuotinis kintamasis. Tai leis kitai eilutėje esančiai gijai prisijungti prie gijos, jei ji yra.

Sintaksė:

>> void pthread_exit (negaliojantis * retval);

pthread_join:

Tai yra funkcija, naudojama laukiant gijos pabaigos.

„Pthread_join“ parametrai:

Čia naudojamas parametras:

thread_id: Tai yra gijos, kurios laukia gija eilutėje, ID.

thread_return: Tai parametras, kuris veikia kaip rodyklė į tam tikrą vietą, kur mes apibrėžėme išėjimo būseną.

Sintaksė:

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

pthread_self:

Tai metodas, naudojamas norint gauti šiuo metu eilutėje esančios gijos ID.

Sintaksė:

>> pthread_t pthread_self (negaliojantis);

pthread_equal:

Šis metodas naudojamas palyginti, jei dvi gijos yra lygiavertės ar ne. Jei dvi gijos yra vienodos, funkcija atsakys į kitą reikšmę nei nulis.

Sintaksė:

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

pthread_cancel:

Šis metodas naudojamas išsiųsti užklausą dėl atšaukimo

„Pthread_cancel“ parametras:

Norint atšaukti užklausą, privaloma įvesti naudojamą parametrą.

Sintaksė:

>> int pthread_cancel (pthread_t threadName);

pthread_detach:

Tai metodas, naudojamas atskirti giją. Norint prisijungti prie nutraukimo, nereikia jokių gijų. Visi gijoje esantys ištekliai atlaisvinami, kai tik gija yra atjungiama.

„Pthread_detachr“ parametras:

Būtent parametras priima privalomą parametro gijos ID. Tai būtina atsieti.

Sintaksė:

>> int pthread_detach (pthread_t siūlas);

Kodo pavyzdys:

Čia yra kodo pavyzdys, parodantis aukščiau aprašytos funkcijos įgyvendinimą. Šioms funkcijoms sudaryti naudojome gcc kompiliatorių.

// Programa, rodanti gijos funkcijas
# įtraukti
# įtraukti
# įtraukti
// Skambinimas POSIX gijai, būtinas UNIX / LINUX sistemose
pthread_t tid [2];
void * Funkcija (void * arg)

nepasirašytas ilgas i = 0;
pthread_t id = pthread_self ();
jei (pthread_equal (id, tid [0]))
// Sąlyga, kad siūlai būtų lygūs

printf ("\ n Pirmasis siūlas apdorojamas \ n");

Kitas

printf ("\ n apdorojamas antrasis siūlas \ n");

// Siūlai apdorojami.
už (i = 0; i<(0x255);i++);
grįžti NULL;

int main (negaliojantis)

int i = 0;
int klaida;
// Naujų gijų kūrimas
kol aš < 2)

klaida = pthread_create (& (tid [i]), NULL ir & Function, NULL);
jei (klaida != 0)
printf ("\ n Nepavyko sukurti gijos: [% s]", strerror (error));
Kitas
printf ("\ n gija sėkmingai sukurta \ n");
// Gija sukurta sėkmingai
i ++;

miegas (5);
grąžinti 0;

Kodas parašytas teksto rengyklėje; galite naudoti bet kurį redaktorių pagal savo pasirinkimą. Tada išsaugokite jį mėgstamoje vietoje.

Failas išsaugomas kompiuterio sistemoje ir tada prieinamas. Mūsų išsaugotas failas buvo pavadintas testu.c. Norėdami jį pasiekti, terminalo lange įveskite šią komandą:

$ sudo gcc testas.c -lpriegis

Tada, norėdami įvykdyti išvestį, įveskite šią komandą:

$ ./ a.išėjo

Laukiama produkcija:

Išvestis, kurią gavome atsakydami į ankstesnį kodą, rodoma žemiau:

Išvada:

Pamoka apėmė pagrindinį siūlų kūrimo procesą ir aptarė visus dažniausiai naudojamus jo kūrimo metodus. Gija yra proceso pavyzdys. Tada mes apžiūrėjome vartotojus per garsiuosius kiekvieno proceso parametrus ir sintakses, kad jie galėtų juos naudoti savo kompiuterinėse programose. Čia taip pat pasidalijome kodo pavyzdžiu kaip pavyzdžiu, kad geriau suprastume idėją sukurti C programą POSIX. Kompiliatorius, kurį naudojome, buvo gcc Linux sistemoje. Vartotojai gali pasirinkti bet kurį kitą kompiliatorių, atsižvelgdami į savo pageidavimus.

Geriausios „Linux“ skirtos „Gamepad“ žemėlapių sudarymo programos
Jei jums patinka žaisti žaidimus „Linux“ su žaidimų pultu, o ne įprasta klaviatūra ir pelės įvesties sistema, yra keletas jums naudingų programų. Daug...
Naudingi įrankiai „Linux“ žaidėjams
Jei jums patinka žaisti žaidimus „Linux“ sistemoje, yra tikimybė, kad galbūt naudojote tokias programas ir įrankius kaip „Wine“, „Lutris“ ir „OBS Stud...
„HD Remastered“ žaidimai, skirti „Linux“, kurie niekada anksčiau nebuvo išleisti „Linux“
Daugelis žaidimų kūrėjų ir leidėjų siūlo senų žaidimų HD remasterį, kad prailgintų franšizės laiką. Prašome gerbėjų, prašančių suderinamumo su šiuolai...