POSIX线程

✍ dations ◷ 2025-11-19 02:22:20 #应用程序接口,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'交替出现。

相关

  • 血钻血钻(也称冲突钻石、战争钻石或血钻石)是一种在战争区域开采并销往市场的钻石。依照联合国的定义,假如反政府组织出产钻石,而利润被用于推翻该政府,那些钻石就会被称为血钻。血钻
  • 厦深铁路.mw-parser-output .RMbox{box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12),0 3px 1px -2px rgba(0,0,0,.2)}.mw-parser-output .RMinline{float:none
  • 作业作业,又称功课、家课,是指在学校内、由教师分配给学生并要求他们完成的任务,目的通常是希望学生能预习或复习知识。常见的作业类型包括阅读课本中的特定章节、阅读指定的书籍、
  • 南罗得西亚南罗得西亚(英语:Southern Rhodesia),是英国在非洲南部的一个殖民地,位于林波波河及南非联邦的北边,即为现今之津巴布韦共和国。开普殖民地总理兼商人塞西尔·罗德斯,因为其境内之
  • 达希·萨木皮伦达希·萨木皮伦(蒙古语:Даш Сампилон,英语:Dash Sampilon,1900年-1937年)布里亚特人,蒙古人民共和国政治人物。1921年至1926年,萨木皮伦担任蒙古驻莫斯科使馆参赞。1926年
  • 克莱德·库姆斯克莱德·库姆斯(英语:Clyde Hamilton Coombs,1912年7月22日-1988年2月4日)是一位美国心理学家,专长是数学心理学领域。他发明了一种投票系统,称为库姆斯方法。库姆斯在密歇根大学建
  • 唐因唐因(1925年-1997年),原名何庄,笔名于晴,男,上海人,中国作家、文学评论和编辑家,曾任鲁迅文学院副院长、院长,中国作家协会理事。
  • 兰茜·艾灵臣琳赛·艾琳森(英语:Lindsay Marie Ellingson,1986年11月19日-),生于美国加州,美国超级名模,前Victoria's Secret 天使。琳赛有芭比娃娃般甜美的精致美貌,一双眼角微微下垂的精灵般的
  • 野叟曝言《野叟曝言》,清代夏敬渠著于乾隆中的章回小说。全书二十卷,一百五十四回。主角名为文白,字素臣,是明代人,因为阉党秉政,政治黑暗,文素臣周游天下,也救了几位美女才女璇姑、素娥和湘
  • 荷兰棒球联盟荷兰棒球联盟(荷兰语:Honkbal Hoofdklasse)是荷兰最高级别的棒球联赛,成立于1922年,目前总共有8支球队。荷兰棒球联赛一季共有168场比赛,其中各队有42场,2011年季后赛模式将更改成