pthreads(7)
pthreads(7)
POSIX-trådar
BESKRIVNING
POSIX.1 specificerar en uppsättning gränssnitt (funktioner, headerfiler) för trådbaserad programmering som ofta kallas POSIX-trådar, eller Pthreads. En enskild process kan innehålla flera trådar som alla exekverar samma program. Dessa trådar delar samma globala minne (data- och heapsegment), men varje tråd har sin egen stack (automatiska variabler).
POSIX.1 kräver också att trådar delar ett antal andra attribut (d.v.s. dessa attribut är process-vida snarare än tråd-specifika):
- Process-ID
- Föräldraprocess-ID
- Processgrupps-ID och sessions-ID
- Kontrollterminal
- Användar- och grupp-ID
- Öppna filbeskrivare
- Låser (se fcntl(2))
- Signaldestinationer
- Mask för filskaparättigheter (umask(2))
- Aktuell katalog (chdir(2)) och rotdir (chroot(2))
- Intervalltimers (setitimer(2)) och POSIX-timers (timer_create(2))
- Nice-värde (setpriority(2))
- Resursgränser (setrlimit(2))
- Mätning av förbrukning av CPU-tid (times(2)) och resurser (getrusage(2))
Utöver stacken specificerar POSIX.1 att flera andra attribut är unika för varje tråd, inklusive:
- Tråd-ID (datatypen pthread_t)
- Signalmask (pthread_sigmask(3))
- Variabeln errno
- Alternativ signalstack (sigaltstack(2))
- Realtidsschemaläggningspolicy och prioritet (sched(7))
De följande Linux-specifika funktionerna är också per-tråd:
- Kapabiliteter (se capabilities(7))
- CPU-affinitet (sched_setaffinity(2))
RETURNERINGSVÄRDEN FÖR PTHREADS-FUNKTIONER
De flesta Pthreads-funktioner returnerar 0 vid framgång och ett felnummer vid fel. Felnummer som returneras har samma betydelse som de felnummer som anges i errno för vanliga systemanrop och C-biblioteksfunktioner. Observera att Pthreads-funktioner inte sätter errno.
TRÅD-ID
Varje tråd i en process har ett unikt tråd-ID (lagrat i typen pthread_t). Detta ID returneras till anroparen av pthread_create(3), och en tråd kan hämta sitt eget ID med pthread_self(3).
Tråd-ID:n är unika endast inom en process. (I alla Pthreads-funktioner som accepterar ett tråd-ID som argument hänvisar detta ID per definition till en tråd i samma process som anroparen.)
TRÅDSÄKRA FUNKTIONER
En trådsäker funktion är en som kan anropas samtidigt från flera trådar utan risk för oväntade resultat.
POSIX.1-2001 och POSIX.1-2008 kräver att alla funktioner i standarden ska vara trådsäkra, med undantag för vissa funktioner, som till exempel:
- `asctime()`
- `basename()`
- `catgets()`
- `crypt()`
- `ctime()`
- `getenv()`
- `rand()`
- `strerror()`
- `strtok()`
- ... och fler.
PTHREADS I LINUX
Linux erbjuder två implementeringar av POSIX-trådar:
- **LinuxThreads**: Ursprunglig implementation, ej längre stödd sedan glibc 2.4.
- **NPTL (Native POSIX Threads Library)**: Modern implementation, bättre överensstämmelse med POSIX.1 och högre prestanda.
KOMPILERING I LINUX
På Linux bör program som använder Pthreads-API kompileras med: `cc -pthread`.
EXEMPEL
Se olika manualer för funktioner som `pthread_create(3)`, `pthread_mutex_lock(3)`, `pthread_cond_wait(3)` och `pthread_join(3)` för att få specifika exempel.
SE ÄVEN
COLOFON
Denna sida är del av man-pages-projektet (Linux kärna och C-bibliotekets användargränssnitt). För mer information, se [1]. Rapportera buggar till [2].
Linux man-pages 6.9.1 (2024-06-15)
SIDOR SOM HÄNVISAR TILL DENNA SIDA
- clone(2)
- timer_create(2)
- vfork(2)
- intro(3)
- libpsx(3)
- pthread_atfork(3)
- pthread_attr_init(3)
- pthread_attr_setaffinity_np(3)
- pthread_attr_setdetachstate(3)
- pthread_attr_setguardsize(3)
- pthread_attr_setinheritsched(3)
- pthread_attr_setschedparam(3)
- pthread_attr_setschedpolicy(3)
- pthread_attr_setscope(3)
- pthread_attr_setsigmask_np(3)
- pthread_attr_setstack(3)
- pthread_attr_setstackaddr(3)
- pthread_attr_setstacksize(3)
- pthread_cancel(3)
- pthread_cleanup_push(3)
- pthread_cleanup_push_defer_np(3)
- pthread_create(3)
- pthread_detach(3)
- pthread_equal(3)
- pthread_exit(3)
- pthread_getattr_default_np(3)
- pthread_getattr_np(3)
- pthread_getcpuclockid(3)
- pthread_join(3)
- pthread_kill(3)
- pthread_kill_other_threads_np(3)
- pthread_mutexattr_getpshared(3)
- pthread_mutexattr_init(3)
- pthread_mutexattr_setrobust(3)
- pthread_mutex_consistent(3)
- pthread_rwlockattr_setkind_np(3)
- pthread_self(3)
- pthread_setaffinity_np(3)
- pthread_setcancelstate(3)
- pthread_setconcurrency(3)
- pthread_setname_np(3)
- pthread_setschedparam(3)
- pthread_setschedprio(3)
- pthread_sigmask(3)
- pthread_sigqueue(3)
- pthread_spin_init(3)
- pthread_spin_lock(3)
- pthread_testcancel(3)
- pthread_tryjoin_np(3)
- pthread_yield(3)
- core(5)
- proc_pid_status(5)
- attributes(7)
- capabilities(7)
- credentials(7)
- futex(7)
- nptl(7)
- sem_overview(7)
- signal(7)
- ld.so(8)
- xfs_copy(8)
Sidslut
Orginalhemsidan på Engelska :https://man7.org/linux/man-pages/man7/pthreads.7.html
Det här är en maskinöversättning av Linux man sidor till svenska. Om du hittar fel är vi tacksamma om du rapporterar dem via formuläret som finns på
https://www.linux.se/kontaka-linux-se/
Tack till Datorhjälp som har sponsrat Linux.se med webbhotell.