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:07] – [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() | ||
| - | * clone() umožňuje vláknu (task) sdílet adresní prostor s rodičem | + | * [[fork|fork()]] |
| - | * fork() | + | * vytvoří zcela samostatný proces s kopií prostoru rodičovského procesu. |
| - | * clone() vytvoří vlákno, které dostane odkaz (pointer) na adresní prostor rodiče | + | * Uplaťnuje se přitom |
| - | * [[http:// | + | * clone() |
| + | * vytvoří vlákno, které dostane odkaz (pointer) na adresní prostor rodiče | ||
| + | * 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) | ||
| + | | ||
| + | | ||
| * 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.1389776859.txt.gz · Poslední úprava: (upraveno mimo DokuWiki)
