Movatterモバイル変換


[0]ホーム

URL:


Přeskočit na obsah
WikipedieWikipedie: Otevřená encyklopedie
Hledání

Pthreads

Z Wikipedie, otevřené encyklopedie

Pthreads je v informační technologiiPOSIXový standard provlákno (thread). Standard,POSIX.1c, Threads rozšíření (IEEE Std 1003.1c-1995), definujeAPI pro vytváření a manipulaci s vlákny.

Implementace API je možná na mnohýchUnix-likeoperačních systémech podporujících POSIX jako např.FreeBSD,NetBSD,OpenBSD,GNU/Linux (projektNPTL),Mac OS X,Solaris,DR-DOS a implementace proMicrosoft Windows také existuje za použití podsystémuSFU/SUA, který poskytuje nativní implementaci několika POSIX API, popř. také při využití balíčků třetí stranypthreads-w32,[1] který implementuje pthreads na vrcholu stávajícíchWindows API.

Obsah

[editovat |editovat zdroj]

Pthreads definuje několikdatových typů,funkcí a konstant proprogramovací jazyk C. K použití vláken v programu je nutné připojit hlavičkový souborpthread.hArchivováno 16. 8. 2008 naWayback Machine.. Implementace vláken se nachází v knihovně libpthread.

Existuje něco kolem 100 Pthread procedur, všechny s prefixem "pthread_" a mohou být rozděleny do čtyř skupin:

POSIXovésemaforové API pracuje s POSIX vlákny, ale není částí standardů pro práci s vlákny, které byly definovány ve standarduPOSIX.1b, real-time rozšíření (IEEE Std 1003.1b-1993). Proto mají semaforové procedury prefix "sem_" a ne "pthread_".

Příklad

[editovat |editovat zdroj]

Příklad ukazující použití Pthreads v jazyce C:

#include<pthread.h>#include<stdio.h>#include<stdlib.h>#include<assert.h>#define NUM_THREADS 5void*TaskCode(void*argument){inttid;tid=*((int*)argument);printf("Ahoj světe! To jsem já, vlákno %d!\n",tid);/* Zde je možnost vložit užitečné věci :-) */returnNULL;}intmain(void){pthread_tthreads[NUM_THREADS];intthread_args[NUM_THREADS];intrc,i;/* vytvoření všech vláken */for(i=0;i<NUM_THREADS;++i){thread_args[i]=i;printf("Ve fci main: vytváření vlákna %d\n",i);rc=pthread_create(&threads[i],NULL,TaskCode,(void*)&thread_args[i]);assert(0==rc);}/* čekání na dokončení všech vláken */for(i=0;i<NUM_THREADS;++i){rc=pthread_join(threads[i],NULL);assert(0==rc);}exit(EXIT_SUCCESS);}

Tento program vytváří 5 vláken, každé spouští funkciTaskCode, která vypisuje unikátní číslo daného vlákna do standardního výstupu. Pokud programátor chce, aby vlákna mezi sebou komunikovala, vyžadovalo by to definováníglobální proměnné a ošetřenísouběhu.

POSIX vlákna pro Windows

[editovat |editovat zdroj]

Windows nativně nepodporuje standard pthreads, proto se projektPthreads-w32 snaží poskytnout přenosnou open-source implementaci. S malou nebo žádnou modifikací mohou být také použityUnix programy (které využívají pthreads) do platformy Windows.[2] Poslední verze 2.8.0 je kompatibilní s 64bitovými systémy Windows.[3][4]

Interix – prostředí dostupné veWindows Services pro UNIX/Subsystem pro aplikace založené na UNIXu. Balíček poskytuje nativní port pthreads API, tj. nenamapováno na Win32/Win64 API ale vytvořen přímo v operačním systému "syscall" rozhraní.[5]

Odkazy

[editovat |editovat zdroj]

Reference

[editovat |editovat zdroj]
  1. Pthread Win-32: Level of standards conformance [online]. 2006-12-22 [cit. 2010-08-29].Dostupné online. Je zde použita šablona{{Cite web}} označená jako k „pouze dočasnému použití“.
  2. HART, Johnson M.Experiments with the Open Source Pthreads Library and Some Comments [online]. 2004-11-21 [cit. 2010-08-29].Dostupné v archivu pořízeném dne 2010-08-30. Je zde použita šablona{{Cite web}} označená jako k „pouze dočasnému použití“.
  3. pthread-win32_x64.zip Source and binary for Pthreads-w32 v2.8.0 [online]. 2010-01-26 [cit. 2010-08-29].Dostupné online. Je zde použita šablona{{Cite web}} označená jako k „pouze dočasnému použití“.
  4. Forum discussion: pthreads-on-64bit-Windows [online]. 2010-01-26 [cit. 2010-08-29].Dostupné v archivu pořízeném dne 2010-12-15. Je zde použita šablona{{Cite web}} označená jako k „pouze dočasnému použití“.
  5. Chapter 1: Introduction to Windows Services for UNIX 3.5 [online].Dostupné online. Je zde použita šablona{{Cite web}} označená jako k „pouze dočasnému použití“.

Literatura

[editovat |editovat zdroj]
  • David R. Butenhof.Programming with POSIX Threads. [s.l.]: Addison-WesleyISBN 0-201-63392-2. Je zde použita šablona{{Cite book}} označená jako k „pouze dočasnému použití“.
  • Bradford Nichols, Dick Buttlar, Jacqueline Proulx Farell.Pthreads Programming. [s.l.]: O'Reilly & AssociatesDostupné online.ISBN 1-56592-115-1. Je zde použita šablona{{Cite book}} označená jako k „pouze dočasnému použití“.
  • Charles J. Northrup.Programming with UNIX Threads. [s.l.]: John Wiley & SonsISBN 0-471-13751-0. Je zde použita šablona{{Cite book}} označená jako k „pouze dočasnému použití“.
  • Kay A. Robbins and Steven Robbins.UNIX Systems Programming. [s.l.]: Prentice-HallDostupné online.ISBN 0-13-042411-0. Je zde použita šablona{{Cite book}} označená jako k „pouze dočasnému použití“.

Související články

[editovat |editovat zdroj]

Externí odkazy

[editovat |editovat zdroj]
Citováno z „https://cs.wikipedia.org/w/index.php?title=Pthreads&oldid=24037680
Kategorie:
Skryté kategorie:

[8]ページ先頭

©2009-2026 Movatter.jp