C Programování

POSIX vlákno s C programováním

POSIX vlákno s C programováním
Vlákno je malá instance spuštěná v rámci procesu. Vlákna se spojí a vytvoří proces a mají některé vlastnosti procesu; proto jsou považovány za lehké procesy. Vlákno není nezávislé, stejně jako proces. Spíše pracují společně na kompilaci a vytvoření procesu. Stejně jako proces má vlákno také vlastní PC (Program Counter) a určitou sadu registrů spolu s prostorem zásobníku.

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í.

Hry Porty komerčních her s otevřeným zdrojovým kódem
Porty komerčních her s otevřeným zdrojovým kódem
Zdarma, s otevřeným zdrojovým kódem a multiplatformní herní enginy lze hrát staré i některé z poměrně nedávných herních titulů. Tento článek uvede sez...
Hry Nejlepší hry z příkazového řádku pro Linux
Nejlepší hry z příkazového řádku pro Linux
Příkazový řádek není při používání Linuxu jen vaším největším spojencem - může být také zdrojem zábavy, protože jej můžete použít k hraní mnoha zábavn...
Hry Nejlepší aplikace pro mapování gamepadu pro Linux
Nejlepší aplikace pro mapování gamepadu pro Linux
Pokud rádi hrajete hry na Linuxu s gamepadem místo typického vstupního systému pro klávesnici a myš, máte k dispozici několik užitečných aplikací. Mno...