pthreads
POSIX Threads (широко известный как pthreads) — модель выполнения, существующая независимо от языка, а также модель параллельного выполнения.
Позволяет программе управлять несколькими различными потоками работы, которые пересекаются во времени. Каждая единица исполнения называется потоком (thread), а создание и управление этими потоками достигается путем обращения к POSIX Threads API. POSIX Threads — это API, определенный стандартом POSIX.1c, Threads extensions (IEEE Std 1003.1c-1995).
Реализации API доступны на многих Unix-подобных POSIX-совместимых операционных системах, таких как FreeBSD, NetBSD, OpenBSD, Linux, macOS, Android,[1] Solaris, Redox и AUTOSAR. Адаптивная, обычно поставляется в виде библиотеки libpthread. Для Microsoft Windows также существуют реализация в рамках подсистемы для приложений на базе UNIX (SFU), которая предоставляет собственную реализацию ряда POSIX API, а также в рамках пакетов сторонних разработчиков (third party), таких как pthreads-w32,[2], который реализует pthreads поверх существующего Windows API.
Содержание[править]
pthreads определяет набор типов данных, функций и констант языка программирования C. Он реализуется с помощью заголовка pthread.h и библиотеки потоков.
Существует около 100 процедур потоков, все они имеют префикс pthread_
, и их можно разделить на четыре группы:
- Управление потоками — создание, объединение потоков и т. д.
- Мьютексы
- Условные переменные (condition variables)
- синхронизация между потоками с помощью блокировки чтения-записи и барьеры.
- Спин-блокировки (spinlock)[3]
API семафоров POSIX работает с потоками POSIX, но не является частью стандарта threads, а определен в стандарте POSIX.1b, Real-time extensions (IEEE Std 1003.1b-1993). В связи с этим процедуры семафора имеют префикс sem_
вместо pthread_
.
Источники[править]
- ↑ c libc/bionic/pthread.c - platform/bionic - Git at Google.
- ↑ Pthread Win-32: Level of standards conformance (2006-12-22). Проверено 29 августа 2010.
- ↑ pthread.h(0p) — Linux manual page. Проверено 18 декабря 2022.
Одним из источников этой статьи является статья в википроекте «Руниверсалис» («Руни», руни.рф), называющаяся «Pthreads». Материал указанной статьи полностью или частично использован в Циклопедии по лицензии CC BY-SA. Всем участникам Руниверсалиса предлагается прочитать «Обращение к участникам Руниверсалиса» основателя Циклопедии и «Почему Циклопедия?». |