POSIX线程

✍ dations ◷ 2025-11-25 16:46:39 #应用程序接口,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'交替出现。

相关

  • 抠鼻子抠鼻子是习惯做在正常情况下,何时人的鼻子会分泌鼻涕以防止外界灰尘等异物入侵肺部。初始分泌的鼻涕呈无色无味状,但当鼻涕捕捉灰尘以后,鼻涕开始变得粘稠,颜色开始加深,并在灰尘
  • 加利西亚-葡萄牙语加利西亚-葡萄牙语(葡萄牙语:、加利西亚语:),又称古葡萄牙语或中世纪葡萄牙语,是伊比利亚半岛西北部地区在中世纪时期使用的语言,也是现在加利西亚语和葡萄牙语、加利西亚-阿斯图里
  • 瓦尔特·罗伯特·多恩伯格瓦尔特·罗伯特·多恩伯格(Walter Robert Dornberger,1895年9月6日-1980年6月27日),德国火箭专家、纳粹德国陆军少将,为现代火箭武器早期开拓者。第一次世界大战期间曾在德军服役
  • 约伯·查诺克约伯·查诺克(?-1693年),英国人,查诺克于1655年或1656年即前往印度并随即任职于东印度公司。他首站驻守北印度卡辛巴刹尔(Kasimbazar)并以殖民侵略手段大举经营该区域。1680年代,他成
  • 东汉姆站东汉姆站(英语:East Ham tube station)是伦敦地铁的一个车站,位于伦敦东部纽汉区的伊斯特汉姆地区。东汉姆站是区域线和汉默史密斯及城市线的交会车站,开通于1858年。东汉姆站位
  • 穆罕默德·埃里安穆罕默德‧伊尔艾朗博士(英语:Mohamed El-Erian,阿拉伯语:محمد العريان‎,1958年-),埃及商人,曾于太平洋投资管理公司(PIMCO)担任首席执行官兼联合首席投资官,于2014年离职。
  • 远藤雄弥远藤雄弥(1987年3月20日-)日本男演员。隶属于Watanabe Entertainment旗下D-BOYS的成员,出生于日本 神奈川县厚木市。血型B型,身高171cm。毕业于厚木市立南毛利中学校。兴趣是收藏
  • 长田重一长田重一(日语:長田 重一/ながた しげかず ,1949年7月15日-),日本分子生物学家。现任京都大学教授。日本学士院会员。文化功劳者。长田教授是日本细胞凋亡研究的第一人,曾获得德国
  • 安托南·阿尔托安托南·阿尔托(Antonin Artaud,法语发音:.mw-parser-output .IPA{font-family:"Charis SIL","Doulos SIL","Linux Libertine","Segoe UI","Lucida Sans Unicode","Code2000","
  • 盐城市人民政府中国共产党盐城市委员会 盐城市人民代表大会常务委员会 中国人民政治协商会议盐城市委员会 中国共产党盐城纪律检查委员会 盐城市监察委员会 盐城市中级人民法院 盐城市人民