POSIX线程

✍ dations ◷ 2025-07-01 17:56:05 #应用程序接口,IEEE标准,并发计算

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;}

这段程序创建了一个新线程,打印含有“b”的行,主线程打印含有“a”的行。当两个线程相互切换执行时输出结果为'a'和'b'交替出现。

相关

  • 信义计划区坐标:25°02′10″N 121°34′15″E / 25.03611°N 121.57083°E / 25.03611; 121.57083信义计划区是位于台湾台北市信义区的都市更新区域,总面积153公顷,1970年代提出副都心计
  • 布朗诉教育委员会布朗诉托皮卡教育局案(Brown v. Board of Education of Topeka, 347 U.S. 483 (1954),全名Oliver Brown et al. v. Board of Education of Topeka et al.,以下简称布朗案)是一
  • 婺学金华学派,中国南宋重要的儒家学派(哲学学派),其代表人物是金华人(今浙江金华)南宋哲学家吕祖谦。金华学派在当时思想界有较大影响,为浙东学派先声之一。金华学派以吕祖谦为代表,时外
  • 浊双唇塞擦音浊双唇塞擦音()是由浊双唇塞音 和浊双唇擦音紧密结合形成的一种罕见的塞擦音。目前没有发现有语言将其视为独立音素,该音仅在一些语言中做为同位异音而出现。如英语的部分方言
  • 1087《1087》是台湾歌手萧亚轩的第八张录音室专辑,于2006年12月22日发行。此专辑是萧亚轩在2006年底签约华纳音乐后发行的首张专辑,但由于萧亚轩在隔年与华纳音乐解约,因此《1087》
  • 洛勒·穆罕默德·舒瓦洛勒·穆罕默德·舒瓦(法语:Lol Mahamat Choua,1939年6月15日-2019年9月15日)是查德政治人物,曾经于1978年时担任4个月的查德国家元首,他同时也是是民主与进步大会(英语:Rally for De
  • 钱正昊钱正昊(2001年1月5日-),为中国大陆流行歌曲男歌手,亚歌文化旗下艺人。2014年5月,参加金鹰卡通卫视儿童歌唱节目《中国新声代2》,成为尚雯婕班级学员。2018年1月,参加爱奇艺偶像男团
  • 努尔普尔努尔普尔(Nurpur),是印度喜马偕尔邦Kangra县的一个城镇。总人口9045(2001年)。该地2001年总人口9045人,其中男性4702人,女性4343人;0—6岁人口980人,其中男538人,女442人;识字率77.81%,
  • 维萨里昂·罗明纳兹维萨里昂·维萨里奥诺维奇·罗明纳兹(俄语:Виссарион Виссарионович Ломинадзе;格鲁吉亚语:ბესო ლომინაძე;1897年5月25日-1935年12月
  • 列霞·乌克兰卡列霞·乌克兰卡(乌克兰语:Леся Українка;1871年2月25日-1913年8月1日),出生名拉里莎·彼得罗芙娜·科萨奇-克维特卡(乌克兰语:Лариса Петрівна Коса