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.