POSIX szál:
Linux platformokon a C és a C ++ nyelv szabványos API-t futtat mindenféle szálhoz kapcsolódó funkcióhoz. POSIX szálként is ismert, amely lehetővé teszi a felhasználók számára, hogy sok szálat hozzanak létre az egyidejű folyamatok áramlásához. Leginkább többmagos rendszerekben vagy processzorokban használható a szálak implementálására a kernelen a rendszer elérése érdekében.
Végrehajtás:
Szükséges ezt a pthreadet felvenni.h fejlécfájl a szkriptben kezdetben. Ez segít a pthreads könyvtár funkcióinak használatában. A c fájl végrehajtásához kövesse az alábbi parancsokat
$ cc -pthread fájl.c
VAGY
$ cc -lpthread fájl.c
A pthreads könyvtárban definiált funkciók a következők lehetnek:
pthread_create:
Új szál létrehozására szolgál
A pthread_create paraméterei:
A következő paraméterekkel rendelkezik:
cérna: Ez az aláíratlan egész érték mutatójaként működik. Visszaadja a kialakult szál szálazonosítóját.
attribútumok: Ez a paraméter mutatóként szolgál egy struktúrára. Egy szál attribútumainak meghatározására szolgál, amelyek lehetnek az ütemezés politikája, és a verem címe stb.
start_routine: Ez a paraméter a szál által végrehajtott alprogramra mutat.
érv: Ez a paraméter az érvénytelenítés mutatója az argumentum elején előre definiált függvénytől eltérő argumentumokkal
Szintaxis:
>> int pthread_create(pthread_t * szál, const pthread_attributes_t * attr, void * (* start_routine) (void *), void * argumentum);
pthread_exit:
Egy szál befejezésére vagy befejezésére szolgál
A pthread_exit paraméterei:
A metódus / folyamat végén használt módszer elfogadja a paraméter újraváltását, amely egy egész szám kötelező mutatója. A szál állapotát úgy tárolja, hogy a szál véget ér. Globális változónak kell lennie. Ez lehetővé teszi, hogy a sorban következő szál csatlakozzon a szálhoz, ha elérhető.
Szintaxis:
>> void pthread_exit (void * retval);pthread_join:
Ez egy olyan funkció, amelyet a szál befejezésére való várakozás idején használnak.
A pthread_join paraméterei:
Az itt használt paraméter a következő:
thread_id: Annak a szálnak az azonosítója, amelyre a sorban lévő szál vár.
thread_return: A paraméter az, amely mutatóként szolgál az adott helyre, ahol meghatároztuk a kilépés állapotát.
Szintaxis:
>> int pthread_join (pthread_t thread_identification, érvénytelen ** thread_return);pthread_self:
Ezt a módszert használják a szál aktuális vonalában lévő azonosító megszerzésére.
Szintaxis:
>> pthread_t pthread_self (érvénytelen);pthread_equal:
Ezt a módszert használják összehasonlításra abban az esetben, ha két szál egyenértékű vagy sem. Ha két szál egyforma, akkor a függvény válaszként nulla értéket ad vissza.
Szintaxis:
>> int pthread_equal (pthread_t thread1, pthread_t thread2);pthread_cancel:
Ezt a módszert használják törlési kérelem küldésére
A pthread_cancel paramétere:
A felhasznált paramétert kötelező megadni a kérelem törléséhez.
Szintaxis:
>> int pthread_cancel (pthread_t threadName);pthread_detach:
Ezt a módszert alkalmazzák egy szál elválasztására. Nincs szüksége semmilyen szálra, hogy csatlakozzon a felmondáshoz. A szálban futó összes erőforrás felszabadul, amint a szál leválik.
A pthread_detachr paramétere:
Ez a paraméter fogadja el a kötelező paraméterlánc azonosítót. Szét kell választani.
Szintaxis:
>> int pthread_detach (pthread_t szál);Minta kód:
Itt van egy példa kód a fent leírt függvény megvalósításának bemutatására. Ezen funkciók fordításához egy gcc fordítót használtunk.
// Program a szálfüggvények megjelenítésére#include
#include
#include
// A POSIX szál meghívása, must-have a UNIX / LINUX rendszerekben
pthread_t tid [2];
void * Funkció (void * arg)
előjel nélküli hosszú i = 0;
pthread_t id = pthread_self ();
if (pthread_equal (id, tid [0]))
// A szálak egyenlőségének feltétele
printf ("\ n Az első szál feldolgozása folyamatban van \ n");
más
printf ("\ n A második szál feldolgozása folyamatban van \ n");
// Fonalak feldolgozása folyamatban.
mert (i = 0; i<(0x255);i++);
return NULL;
int main (érvénytelen)
int i = 0;
int hiba;
// Új szál létrehozása
miközben én < 2)
hiba = pthread_create (& (tid [i]), NULL, & Function, NULL);
ha (hiba != 0)
printf ("\ n Nem sikerült létrehozni a szálat: [% s]", strerror (hiba));
más
printf ("\ n A szál sikeresen létrehozva \ n");
// A szál sikeresen létrehozva
i ++;
alvás (5);
visszatér 0;
A kódot szövegszerkesztőben írják; tetszés szerinti szerkesztőt használhat. Ezután mentse el kedvenc helyére.
A fájlt a számítógépes rendszer menti, majd hozzáférhet hozzá. Az általunk mentett fájlt tesztnek nevezték el.c. Hozzáféréshez írja be a következő parancsot a terminál ablakába:
$ sudo gcc teszt.c -lpthread
Ezután írja be a kimenet végrehajtásához a következő parancsot:
$ ./ a.ki
Várható teljesítmény:
Az előző kódra válaszul kapott kimenetet az alábbiakban mutatjuk be:
Következtetés:
Az oktatóanyag a szálkészítés alapvető folyamatát ismertette, és a létrehozás során az összes általánosan használt módszert megtárgyalta. A szál egy folyamat példája. Ezután végigvezettük a felhasználókat az egyes folyamatok által használt híres paramétereken és a szintaxisokon keresztül, hogy azokat felhasználhassák számítógépes programjaikban. Itt példakódot is megosztottunk mintaként, hogy jobban megértsük a C program létrehozásának ötletét a POSIX rendszerben. Az általunk használt fordító a gcc volt a Linux rendszerben. A felhasználók preferenciájuk alapján bármely más fordítót is választhatnak.