c_multiprocessing
Rozdíly
Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
| Obě strany předchozí revizePředchozí verzeNásledující verze | Předchozí verze | ||
| c_multiprocessing [2014/01/15 10:10] – [Praxe] djbuldog | c_multiprocessing [2025/08/28 10:09] (aktuální) – upraveno mimo DokuWiki 127.0.0.1 | ||
|---|---|---|---|
| Řádek 52: | Řádek 52: | ||
| * Pthreads je tedy systémově závislá knihovna | * Pthreads je tedy systémově závislá knihovna | ||
| - | * Vlákna Linux: | + | * Vlákna/LWP Linux: |
| * Linux nazývá vlákna tasks | * Linux nazývá vlákna tasks | ||
| * Vytváření vláken je realizováno službou clone() | * Vytváření vláken je realizováno službou clone() | ||
| - | * fork() | + | * [[fork|fork()]] |
| * vytvoří zcela samostatný proces s kopií prostoru rodičovského procesu. | * vytvoří zcela samostatný proces s kopií prostoru rodičovského procesu. | ||
| * Uplaťnuje se přitom **CoW** (copy-on-write). Mechanismus CoW namapuje virtuální pamět potomka na fyzickou paměť rodiče. Až pří zápisu do paměti jakéhokoliv z procesů se přislušné modifikované stránky kopírují do nové stránky ve fyzické paměti | * Uplaťnuje se přitom **CoW** (copy-on-write). Mechanismus CoW namapuje virtuální pamět potomka na fyzickou paměť rodiče. Až pří zápisu do paměti jakéhokoliv z procesů se přislušné modifikované stránky kopírují do nové stránky ve fyzické paměti | ||
| Řádek 61: | Řádek 61: | ||
| * vytvoří vlákno, které dostane odkaz (pointer) na adresní prostor rodiče | * vytvoří vlákno, které dostane odkaz (pointer) na adresní prostor rodiče | ||
| * umožňuje vláknu (task) sdílet adresní prostor s rodičem | * umožňuje vláknu (task) sdílet adresní prostor s rodičem | ||
| + | * samotná funkce clone se v programu většinou nepoužívá (využívají ji knihovny jako pthreads) | ||
| * pthreads | * pthreads | ||
| * [[http:// | * [[http:// | ||
| * Poslední implementací je implementace NPTL (Native POSIX Thread Library). Tato implementace se opět vrací k mapování 1:1 (one-to-one, | * Poslední implementací je implementace NPTL (Native POSIX Thread Library). Tato implementace se opět vrací k mapování 1:1 (one-to-one, | ||
| + | * fork je programátorsky jednodušší | ||
| + | * když se ukončí vlákno, někdo by měl vyzvednout návratovou hodnotu (funkce pthread_wait nebo tak) | ||
| + | * vlákna sdílý paměť, otevřené soubory (fd), sockety, signály (bacha na obsluhu signálu, např používání sleep) | ||
c_multiprocessing.1389777054.txt.gz · Poslední úprava: (upraveno mimo DokuWiki)
