POSIX线程

✍ dations ◷ 2025-09-18 11:15:29 #应用程序接口,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'交替出现。

相关

  • 形式逻辑逻辑(古希腊语:λογική;德语:Logik;法语:logique;英语:logic;意大利语、西班牙语、葡萄牙语: logica),又称理则、论理、推理、推论,是对有效推论的哲学研究。逻辑被使用在大部分的
  • 单磷酸脱氧胞苷去氧胞苷单磷酸(Deoxycytidine monophosphate,dCMP)是一种去氧核苷酸,是DNA的组成原料之一。结构与胞苷单磷酸相似,但一个-OH基被氢原子取代。
  • 齐亚尔王朝齐亚尔王朝(波斯语:زیاریان;英语:Ziyarids)是928年至1043年统治里海沿岸戈尔甘及马赞德兰地区的伊朗王朝。马尔达维季(Mardavij)是王朝的创建者,他从萨曼王朝军队骚乱当中乘
  • 为泰党为泰党(PTP;泰语:พรรคเพื่อไทย,皇家音译:Phak Phuea Thai,发音:;),是由泰国前首相他信成立的第三个政党。曾为泰国国会的执政党。2008年9月由前人民力量党重组而成立,政策
  • 信息保障基地中国人民解放军军徽中央军委联合参谋部信息保障基地,位于北京市丰台区长辛店镇辛庄村,是中央军事委员会联合参谋部直属单位,是中国人民解放军战略信息支援保障力量。2010年,中国
  • 铁票铁票,是指某些选民,他们的选举投票意向,自己早有决定,不会受外界相反的建议及民调左右,只会受相同的外在因素强化,例如受到所属社团、团体的表扬、或者群体认同。铁票选民也可以视
  • 格伦戴尔格伦戴尔(Grendel),是8世纪英国史诗《贝武夫》中记述的妖怪。也是其中三个反派角色之一(剩下的是丈兰德尔的母亲和看守宝藏的火龙)。在故事中,他会因为不耐人们发出的噪音而攻击人
  • 曼特卡斯曼特卡斯(Mant Khas),是印度喜马偕尔邦Kangra县的一个城镇。总人口5240(2001年)。该地2001年总人口5240人,其中男性2666人,女性2574人;0—6岁人口380人,其中男208人,女172人;识字率85.9
  • 蔡国珍蔡国珍(1528年-1611年),字汝聘,号见麓,谥恭靖,江西奉新县(今江西省奉新县)人,明朝政治人物。嘉靖三十四年(1555年),乡试中举。嘉靖三十五年(1556年)联捷丙辰科进士,时严嵩主国事,希望将同乡蔡
  • 弗朗索瓦-路易·特兰姆雷弗朗索瓦-路易·特兰姆雷(法语:François-Louis Tremblay)(1980年11月13日-),是加拿大著名的男子短道速滑运动员。他是2002年盐湖城冬奥会5000米接力和2010年温哥华冬奥会5000米接