Введение

Модель исполнения, обеспечивающая параллельные вычисления.
В вычислительной технике POSIX Threads, обычно известные как pthreads, представляют собой модель исполнения, независимую от языка программирования, а также модель параллельного исполнения. Она позволяет программе управлять множеством различных потоков работы, выполняющихся одновременно. Каждый поток работы называется потоком, а создание и управление этими потоками осуществляется посредством вызовов API POSIX Threads. POSIX Threads – это API, определённый стандартом POSIX.1c, Threads extensions (IEEE Std 1003.1c 1995) Института инженеров электротехники и электроники (IEEE). Реализации API доступны для многих POSIX-совместимых Unix-подобных операционных систем, таких как FreeBSD, NetBSD, OpenBSD, Linux, macOS, Android, Solaris, Redox и AUTOSAR Adaptive, как правило, в виде библиотеки libpthread. Существуют также реализации для DR DOS и Microsoft Windows: в подсистеме SFU/SUA, обеспечивающей нативную реализацию ряда POSIX API, и в сторонних пакетах, таких как pthreads w32, реализующих pthreads поверх существующего API Windows.

Темы POSIX для Windows

Windows не поддерживает стандарт pthreads нативно, поэтому проект Pthreads4w стремится предоставить переносимую и открытую реализацию-обёртку. Его также можно использовать для переноса программного обеспечения Unix (использующего pthreads) на платформу Windows с минимальными или вообще без изменений. Pthreads4w версии 3.0.0 или более поздней, распространяемой под лицензией Apache Public License v2.0, совместима с 64-разрядными и 32-разрядными системами Windows. Версия 2.11.0, распространяемая под лицензией LGPLv3, также совместима с 64-разрядными и 32-разрядными системами. Проект Mingw w64 также содержит реализацию-обёртку 'pthreads, winpthreads, которая стремится использовать больше нативных системных вызовов, чем проект Pthreads4w. Подсистема среды Interix, доступная в пакете Windows Services for UNIX/Subsystem for UNIX based Applications, предоставляет нативный порт API pthreads, то есть он не отображается на API Win32, а построен непосредственно на интерфейсе системных вызовов операционной системы.