POSIX线程(英语:POSIX Threads,常被缩写为Pthreads)是POSIX的线程标准,定义了创建和操纵线程的一套API。
实现POSIX 线程标准的库常被称作Pthreads,一般用于Unix-like POSIX 系统,如Linux、 Solaris。但是Microsoft Windows上的实现也存在,例如直接使用Windows API实现的第三方库pthreads-w32;而利用Windows的SFU/SUA子系统,则可以使用微软提供的一部分原生POSIX API。
Pthreads定义了一套C语言的类型、函数与常量,它以pthread.h 页面存档备份,存于互联网档案馆头文件和一个线程库实现。
Pthreads API中大致共有100个函数调用,全都以"pthread_"开头,并可以分为四类:
POSIX的Semaphore API可以和Pthreads协同工作,但这并不是Pthreads的标准。因而这部分API是以"sem_"打头,而非"pthread_"。
线程操纵函数(简介起见,省略参数):
线程属性函数:
mutex函数:
条件变量函数:
线程私有存储(Thread-local storage):
同步屏障函数
其它多线程同步函数:
工具函数:
信号量函数,包含在semaphore.h中:
共享内存函数,包含在sys/mman.h中,链接时使用rt库:
C中使用 Pthreads的示例:
#include <stdio.h>#include <stdlib.h>#include <time.h>#include <pthread.h>static void wait(void){ time_t start_time = time(NULL); while (time(NULL) == start_time) { /* do nothing except chew CPU slices for up to one second */ }}static void *thread_func(void *vptr_args){ int i; for (i = 0; i < 20; i++) { fputs(" b\n", stderr); wait(); } return NULL;}int main(void){ int i; pthread_t thread; if (pthread_create(&thread, NULL, thread_func, NULL) != 0) { return EXIT_FAILURE; } for (i = 0; i < 20; i++) { puts("a"); wait(); } if (pthread_join(thread, NULL) != 0) { return EXIT_FAILURE; } return EXIT_SUCCESS;}