Pthread
Матеріал з Вікіпедії — вільної енциклопедії.
POSIX Threads або Pthread — стандарт POSIX реалізації нитей виконання, який визначає API для створення та управління ними.
Бібліотеки, які реалізують цей стандарт та його функціі, звичайно називаються Pthreads (функції мають приставку «pthread_»). Найбільш широко використовуються для Unix-подібних операційних систем, таких як Linux чи Solaris, також існує реалізація для Microsoft Windows (Pthreads-w32)
Зміст |
Основні функції стандарту[ред.]
Pthreads визначає набір типів та функцій мовою програмування Сі. Заголовочний файл — pthread.h.
- Типи даних:
- pthread_t: дескриптор потоку
- pthread_attr_t: набір атрибутів потоку
- Функції управління потоками:
- pthread_create(): створення потоку
- pthread_exit(): завершення потоку
- pthread_cancel(): відміна потоку
- pthread_join(): блокування потоку до завершення іншого потоку, вказаного у виклиці функції
- pthread_detach(): звільнити ресурси зайняті потоком (якщо потік виконується, звільнення ресурсів відбудеться після його завершення)
- pthread_attr_init(): ініціалізація структури атрибутів потоку
- pthread_attr_setdetachstate(): вказівка системі, що вона після завершення потоку може звільнити ресурси, зайняті потоком
- pthread_attr_destroy(): звільнення пам'яті від структури атрибутів потоку (знищити дескриптор)
- Функції синхронізації потоків:
- pthread_mutex_init (), pthread_mutex_destroy (), pthread_mutex_lock (), pthread_mutex_trylock (), pthread_mutex_unlock (): за допомогою м'ютексів
- pthread_cond_init(), pthread_cond_signal, pthread_cond_wait(): за допомогою умовних змінних
Приклад[ред.]
Приклад використання POSIX потоків.
#include <stdio.h> #include <stdlib.h> #include <pthread.h> #define THREADS_MAX 4 void *function(void *param) { int id = (int)param; int i, loops = 10; for(i = 0; i < loops; i++) { printf("thread %d: loop %d\n", id, i); } pthread_exit(NULL); } int main(void) { pthread_t threads[THREADS_MAX]; int i; printf("pre-execution\n"); for (i = 0; i < THREADS_MAX; i++) { pthread_create(&threads[i], NULL, function, (void *)i); } printf("mid-execution\n"); for (i = 0; i < THREADS_MAX; i++) { pthread_join(threads[i], NULL); } printf("post-execution\n"); return EXIT_SUCCESS; }
Дивись також[ред.]
Посилання[ред.]
- The Open Group Base Specifications Issue 6, IEEE Std 1003.1
- POSIX-потоки та синхронні обробники {
- Багатопоточне програмування (Підручник Pthreads)
- Приклади використання Pthreads
- Приклади використання Pthreads в C/C++
- Статья «Пояснюючи потоки POSIX», Даніеля Роббінса (засновника проекту Gentoo)
- Інтерв'ю «10 питань Девіду Бутенхофу про паралельне програмування та потоки POSIX» з Майклом Суіссом
- Open Source POSIX Threads для Win32 (англ.)
- GNU Portable threads
- POSIX thread (pthread) libraries in Linux
- Pthread Win-32
|
||||||||||||||||||||||||||||||||
