POSIX线程

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

相关

  • 中国的科学与文明《中国科学技术史》(英语:Science and Civilisation in China)乃李约瑟研究所李约瑟博士和国际学者们所编著的一套关于中国的科学技术历史的著作。李约瑟在书中列出中国人的发
  • 低压低压区(英语:Low pressure area,符號為L)是大气中气压较邻近地区为低的地带。一般都是成螺旋状,是为气旋。在北半球低气压区域内的空气作逆时针方向旋转,在南半球则顺时针方向。偶
  • 团子 (日本)团子是日式点心(和菓子)的一种。制作方法介于元宵和汤圆之间,是借由搓半湿的糯米米粉制成。没有馅料,用开水煮熟捞出,食用时会裹上豆粉、黑芝麻、白糖或花生粉等埘粉。到了日本经
  • 影武者 (电影)《影武者》又名《影子武士》,是一部1980年上映、由日本著名电影导演黑泽明执导的日本电影,“影武者”谓日本战国时代中样貌形象与大名相似的替身。该片男主角一开始由《盲剑客
  • 乔治·索尔蒂乔治·索尔蒂爵士(英语:Sir Georg Solti,1912年10月21日-1997年9月5日),英籍匈牙利裔指挥家。索尔蒂生于布达佩斯,幼年学习钢琴,还于布达佩斯在贝拉·巴托克、多赫南伊·埃尔诺和柯
  • 明朝皇子命名仪明朝皇子命名仪是明朝一套为皇子取名的礼仪制度。命名仪,最早可以追溯到周代《礼记》中的记载,明太祖初年就已经有一定仪式,但至明世宗嘉靖十二年(1533年)才特别确定了这套制度,明
  • 李尔氏金刚鹦鹉李尔氏金刚鹦鹉(学名:,英文名:Lear's Macaw、Indigo Macaw 或 Lear's Hyacinthine Macaw(Hyacinthine 意指“拥有如风信子般的紫蓝色”,Hyacinthine Macaw 则是指紫蓝金刚鹦鹉)),又名
  • 朱书文字朱书文字是陶文的一种,出现于中国新石器时代,一般标记在陶器上,早期可以追溯到新石器时代晚期。它被中国学者认为可能是“文字”,并认为它是甲骨文可能的前身。即使它不是文字,也
  • 贝富塔卡坐标:23°49′30″S 46°58′44″E / 23.82500°S 46.97889°E / -23.82500; 46.97889贝富塔卡(马达加斯加语:Befotaka),是马达加斯加的城镇,位于该国东南部,由阿齐莫-阿齐那那那区
  • 合唱吧!300《合唱吧!300》为中国大陆腾讯视频、哇唧唧哇联合于2019年7月28日推出的音乐综艺节目,由张大大主持。节目形式是由2007快乐男声、2009快乐女声、R1SE、草蜢乐队、火箭少女101