pthreads(7): Skillnad mellan sidversioner

Från Wiki.linux.se
Hoppa till navigering Hoppa till sök
(Skapade sidan med '= 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 attribu...')
 
(Ingen skillnad)

Nuvarande version från 25 november 2024 kl. 07.38

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

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.