POSIX vlákno:
Na platformách Linux pthread standardní API pro jazyky C a C ++ pro všechny druhy funkcí souvisejících s vlákny. Je také známý jako vlákno POSIX, které umožňuje uživatelům vytvářet mnoho vláken pro tok současných procesů. Nejlépe se používá ve vícejádrových systémech nebo procesorech k implementaci vláken do jádra, aby se dosáhlo systému.
Implementace:
Je nutné zahrnout toto vlákno.h soubor záhlaví ve skriptu zpočátku. To pomůže při používání funkcí knihovny pthreads. Chcete-li spustit soubor c, použijte následující příkazy
$ cc -pthread soubor.C
NEBO
$ cc -lpthread soubor.C
Mezi funkce definované v knihovně pthreads patří:
pthread_create:
Používá se k vytvoření nového vlákna
Parametry pthread_create:
Má následující parametry:
vlákno: To funguje jako ukazatel na celočíselnou hodnotu bez znaménka. Vrátí ID vlákna vytvořeného vlákna.
atributy: Tento parametr funguje jako ukazatel na strukturu. Používá se k definování atributů vlákna, které mohou být zásadou plánování a adresy zásobníku atd.
start_routine: Tento parametr je ukazatel na podprogram implementovaný vláknem.
argument: Tento parametr je ukazatel na void s různými argumenty k funkci předdefinované na začátku argumentu
Syntax:
>> int pthread_create(pthread_t * thread, const pthread_attributes_t * attr, void * (* start_routine) (void *), void * argument);
pthread_exit:
Používá se k ukončení nebo ukončení vlákna
Parametry pthread_exit:
Metoda použitá na konci metody / procesu přijímá retenci parametrů, která je povinným indikátorem celého čísla. Ukládá stav vlákna tak, že vlákno končí. Musí to být globální proměnná. To umožní dalšímu vláknu v řádku připojit se k vláknu, pokud je k dispozici.
Syntax:
>> void pthread_exit (void * retval);pthread_join:
Toto je funkce používaná v době čekání na ukončení vlákna.
Parametry pro pthread_join:
Zde použité parametry jsou:
ID vlákna: Je to ID vlákna, na které vlákno v řádku čeká.
thread_return: Je to parametr, který funguje jako ukazatel na konkrétní místo, kde jsme definovali stav ukončení.
Syntax:
>> int pthread_join (pthread_t thread_identification, void ** thread_return);pthread_self:
Jedná se o metodu používanou k získání ID vlákna aktuálně v řádku.
Syntax:
>> pthread_t pthread_self (void);pthread_equal:
Tato metoda se používá k porovnání v případě, že dvě vlákna jsou ekvivalentní nebo ne. Pokud jsou dvě vlákna podobná, vrátí funkce v reakci jinou hodnotu než nulu.
Syntax:
>> int pthread_equal (pthread_t thread1, pthread_t thread2);pthread_cancel:
Tato metoda se používá k odeslání žádosti o zrušení
Parametr pro pthread_cancel:
K zrušení požadavku je nutné zadat použitý parametr.
Syntax:
>> int pthread_cancel (pthread_t threadName);pthread_detach:
Toto je metoda, která se používá k oddělení vlákna. Nepotřebuje žádné vlákno, aby se připojilo k ukončení. Všechny prostředky běžící ve vlákně se uvolní, jakmile se vlákno odpojí.
Parametr pthread_detachr:
Je to parametr, který přijímá povinné ID vlákna parametru. Je třeba se oddělit.
Syntax:
>> int pthread_detach (pthread_t vlákno);Ukázkový kód:
Zde je ukázkový kód, který ukazuje implementaci výše popsané funkce. K kompilaci těchto funkcí jsme použili kompilátor gcc.
// Program pro zobrazení funkcí podprocesu#zahrnout
#zahrnout
#zahrnout
// Volání podprocesu POSIX, který musíte mít v systémech UNIX / LINUX
pthread_t tid [2];
void * Function (void * arg)
bez znaménka dlouhé i = 0;
pthread_t id = pthread_self ();
if (pthread_equal (id, tid [0]))
// Podmínka pro stejná vlákna
printf ("\ n První vlákno se zpracovává \ n");
jiný
printf ("\ n Probíhá zpracování druhého vlákna \ n");
// Vlákna se zpracovávají.
pro (i = 0; i<(0x255);i++);
návrat NULL;
int main (neplatný)
int i = 0;
chyba int;
// Vytvoření nového vlákna
zatímco já < 2)
error = pthread_create (& (tid [i]), NULL, & Function, NULL);
if (chyba != 0)
printf ("\ n Nebylo možné vytvořit vlákno: [% s]", strerror (chyba));
jiný
printf ("\ n Vlákno bylo úspěšně vytvořeno \ n");
// Vlákno bylo úspěšně vytvořeno
i ++;
spánek (5);
návrat 0;
Kód je napsán v textovém editoru; můžete použít libovolný editor podle vašeho výběru. Poté jej uložte na své oblíbené místo.
Soubor je uložen v počítačovém systému a poté k němu je přistupováno. Soubor, který jsme uložili, se jmenoval test.C. Chcete-li jej otevřít, zadejte do okna terminálu následující příkaz:
$ sudo gcc test.c -lpthread
Dále pro provedení výstupu zadejte následující příkaz:
$ ./A.ven
Očekávaný výstup:
Výstup, který jsme dostali v reakci na předchozí kód, je uveden níže:
Závěr:
Výukový program se zabýval základním procesem vytváření vláken a diskutoval o všech běžně používaných metodách jeho vytváření. Vlákno je instancí procesu. Poté jsme provedli uživatele slavnými parametry používanými každým procesem spolu se syntaxemi, aby je mohli využívat ve svých počítačových programech. Zde jsme také sdíleli ukázkový kód jako ukázku, abychom lépe porozuměli myšlence vytvoření programu C v POSIX. Kompilátor, který jsme použili, byl gcc v systému Linux. Uživatelé se mohou rozhodnout pro jakýkoli jiný překladač také na základě svých preferencí.