PPR: Vlákna POSIX, knihovna PThread

Literatura

K dispozici je detailní manuál pro knihovnu DEC Threads (anglicky) zde a stručný přehledový návod (česky).

Příklady

Všechny uvedené příklady jsou k dispozici zde.

prime

Paralelní hledání prvočísel, příklad převzatý z manuálu DEC Threads.

sum_op

Ukázka konstrukce jednoduchého monitoru (single-object (tj. nikoliv typ), jehož služby lze volat jen z hlavního programu (nikoliv z vláken)) implementovaného s využitím datového paralelismu a realizujícího sčítání vektoru reálných (double) čísel. Řešení lze srovnat s podobným v jazyce Ada (ale mnohem obecnějším - typový generický monitor pro libovolnou redukční operaci nad libovolným datovým typem) a v jazyce Java (typový monitor-třída, bez genericity (jen sčítání reálných čísel)).
Součástí zdrojového kódu je stručný komentář příkladu.

Stručný návod na experimentování s knihovnou PThread

Programy v C s použitím knihovny PThread (pouze konzolové) lze testovat na počítači eryx.zcu.cz nebo jumbo.fav.zcu.cz

  1. Celý program se pro jednoduchost realizuje jako jeden soubor (třeba aplikace.c).
  2. Zdrojový soubor se přenese (WinScp) do příslušného podadresáře.
  3. Přeložení a sestavení programu se provede příkazem
    c++ -o aplikace aplikace.c -pthread
    resp. pokud chcete vypsat chybové hlášky do souboru
    c++ -o aplikace aplikace.c -pthread 2> a.txt
    POZN. Chybový report lze prohlížet příkazem cat a.txt|more
  4. Úspěšně přeložený a sestavený program se spustí (v tomto případě) příkazem aplikace.
  5. Pokud se výpočet programu řádně neukončí (což se může stát zejména při experimentování s vlákny často), je třeba:
    - suspendovat program pomocí CTRL+Z
    - vypsat stav příkazem ps -a a zjistit číselné ID suspendovaného programu
    - "zabít" suspendovaný program příkazem kill ID
    POZN. Ve většině případů stačí program ukončit pomocí CTRL+C, ale je dobré čas od času (hlavně před odhlášením) zkontrolovat příkazem ps -a, zda nezůstal nějaký proces "viset" a případně ho "zabít".



© KIV FAV ZČU 2006-7
autor: Pavel Čírtek, Stanislav Racek, Tomáš Koutný
design: Lukáš Valenta