Pthreads

Technology
12 hours ago
8
4
2
Avatar
Author
Albert Flores

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

Implementace API je možná na mnohých Unix-like operačních systémech podporujících POSIX jako např. FreeBSD, NetBSD, OpenBSD, GNU/Linux (projekt NPTL), Mac OS X, Solaris, DR-DOS a implementace pro Microsoft Windows také existuje za použití podsystému SFU/SUA, který poskytuje nativní implementaci několika POSIX API, popř. +more také při využití balíčků třetí strany pthreads-w32, který implementuje pthreads na vrcholu stávajících Windows API.

Obsah

Pthreads definuje několik datových typů, funkcí a konstant pro programovací jazyk C. K použití vláken v programu je nutné připojit hlavičkový soubor [url=http://opengroup. +moreorg/onlinepubs/007908799/xsh/pthread. h. html]pthread. h[/url]. 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:

* Manipulace s vlákny - vytváření, spojování, atd. * Mutexy * Podmínkové proměnné * Synchronizace mezi vlákny za použití čtecích/zapisovacích zámků a bariér

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

Příklad

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

#include #include #include #include

#define NUM_THREADS 5

void *TaskCode(void *argument) { int tid;

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 :-) */

return NULL; }

int main(void) { pthread_t threads[NUM_THREADS]; int thread_args[NUM_THREADS]; int rc, i;

/* vytvoření všech vláken */ for (i=0; i

rc); } exit(EXIT_SUCCESS); } Tento program vytváří 5 vláken, každé spouští funkci TaskCode, 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

Windows nativně nepodporuje standard pthreads, proto se projekt [url=http://sourceware.org/pthreads-win32/]Pthreads-w32[/url] snaží poskytnout přenosnou open-source implementaci. S malou nebo žádnou modifikací mohou být také použity Unix programy (které využívají pthreads) do platformy Windows. Poslední verze 2.8.0 je kompatibilní s 64bitovými systémy Windows. Interix - prostředí dostupné ve Windows 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í.

Odkazy ==

Reference

Literatura

Související články

OpenMP

Externí odkazy

[url=https://computing. llnl. +moregov/tutorials/pthreads/]Výuka Pthreads[/url] * [url=http://yolinux. com/TUTORIALS/LinuxTutorialPosixThreads. html]Výuka C/C++: používání Pthreads[/url] * Článek "[url=http://www-128. ibm. com/developerworks/linux/library/l-posix1. html]Vysvětlení POSIX vláken[/url]" od Daniela Robbinse (zakladatel Gentoo Linux) * Interview "[url=http://www. thinkingparallel. com/2007/04/11/ten-questions-with-david-butenhof-about-parallel-programming-and-posix-threads/]10 otázek pro Davida Butenhofa o paralelním programování a POSIX vlákna[/url]" od Michaela Suesse * [url=http://sources. redhat. com/pthreads-win32/]Open Source POSIX vlákna pro Win32[/url] * [url=http://www. opengroup. org/onlinepubs/007904975/basedefs/pthread. h. html]Open Group Base specifikace 6. vydání, IEEE Std 1003. 1[/url] * [url=http://conferences. oreillynet. com/presentations/os2007/os_lamothe. pdf]Pthreads Presentation at 2007 OSCON (O'Reilly Open Source konvence) od Adriena Lamotha. Přehled pthreads se současnými trendy. [/url] * [url=https://web. archive. org/web/20110529192843/http://www. futurechips. org/tips-for-power-coders/open-mp-pthreads. html]Porovnání programovatelnosti Open MP a pthreads[/url].

Kategorie:Programování

5 min read
Share this post:
Like it 8

Leave a Comment

Please, enter your name.
Please, provide a valid email address.
Please, enter your comment.
Enjoy this post? Join Cesko.wiki
Don’t forget to share it
Top