POSIX线程

✍ dations ◷ 2025-08-24 02:50:58 #应用程序接口,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'交替出现。

相关

  • 基尔运河坐标:54°22′03.0″N 10°08′01.2″E / 54.367500°N 10.133667°E / 54.367500; 10.133667基尔运河 (德语:Nord-Ostsee-Kanal, Kieler Kanal,英语:Kiel Canal),又称北海-波罗的
  • 思源堂思源堂坐落于天津市南开区卫津路94号南开大学校园内,该建筑目前为重点保护等级历史风貌建筑。思源堂始建于1923年,是美国洛克菲勒基金会与企业家袁述之捐资兴建的科学楼。现在
  • 世界青年游泳锦标赛世界青年游泳锦标赛,国际游泳总会主办的青年(18岁以下)世界锦标赛,创办于2006年,每两年举办一次。所有纪录都于决赛和长泳池中达成,除非另有说明。 说明: # – 记录等待 FINA批
  • 阿里礼萨·贝兰万德阿里礼萨·贝兰万德(波斯语:‌ علیرضا بیرانوند‎,1992年9月21日-),是一名伊朗职业足球运动员,司职守门员。现在效力于伊朗职业足球联赛球队柏斯波利斯。他是伊朗国
  • 瓦尔特里·博塔斯140(瓦尔特里·维克托·博塔斯(芬兰语:Valtteri Viktor Bottas,1989年8月28日-),生于芬兰纳斯托拉,芬兰一级方程式车手,现时效力于梅赛德斯车队,担任主力车手。博塔斯曾经获得2011年GP
  • 埃米尔·瓦尔德退费尔艾米尔·华多佛(法语:Émile Waldteufel,1837年12月9日-1915年2月12日),法国钢琴家、指挥家、作曲家。华多佛以创作大众音乐,特别是华尔兹和波尔卡等舞蹈音乐而知名。在法国,被称为
  • 威廉·沃克威廉·沃克(William Walker,1824年5月8日-1860年9月12日)是一名美国律师、记者和冒险家,他组织了几次私营军事远征到拉丁美洲。他建立了在自己个人控制下的以英语为母语的殖民地,
  • 黄金大劫案《黄金大劫案》(英语:)是一部小马奔腾出品、宁浩执导的中国喜剧片,中国于2012年4月24日公映。故事发生于1930年代满洲国时期的东北,主要讲述一个小混混在乱世中的成长史。“小东
  • 詹姆士·罗斯柴尔德詹姆斯·阿曼德·埃德蒙·德·罗斯柴尔德( DCM DL)(1878年12月1日-1957年5月7日),有时被称为吉米·德·罗斯柴尔德(Jimmy de Rothschild),是出身自富有的罗斯柴尔德家族的英国自由派
  • 石黑达昌石黑达昌(日语:石黒 達昌/いしぐろ たつあき,1961年9月5日-),日本科幻小说家,医学家。毕业于东京大学医学部,德克萨斯大学MD安德森肿瘤中心副教授。所著科幻小说有《冬至草》等。