POSIX线程

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

相关

  • Peuerbach波伊尔巴赫(德语:Peuerbach),奥地利上奥地利州格里斯基兴县的一个市镇,位于豪斯鲁克山(Hausruck)的390米高处。南北长5.3公里,东西宽5.4公里,整个面积为11公里。丛林面积约占13.6%,耕
  • 1992年法赫德国王杯1992年法赫德国王杯(英语:1992 King Fahd Cup),即第1届联合会杯足球赛,于1992年10月15日至20日在沙特阿拉伯举行。决赛中阿根廷以 3–1 击败了沙特阿拉伯,夺得了首个冠军。该项赛
  • 自发演替在生态学中,自发演替是生态系统被一个生态系统中生物组成部分来改变或演进。 与此相反的是,异发演替是由生态系统中的非生物组分来改变或演进。 已植物发生自发演替为例子:叶吸
  • 麦瑰尔姐妹麦瑰尔姐妹(英语:McGuire Sisters)是美国的一个流行音乐三重唱组合,由三位成员组成:她们的代表作有歌曲《真挚地(英语:Sincerely (song))》(1954年)、《甜蜜时光(英语:Sugartime)》(1957年
  • 花桥街道 (新津县)花桥街道,原为花桥镇,是中华人民共和国四川省成都市新津区下辖的一个乡镇级行政单位。2019年12月,撤镇设街道花桥街道下辖以下地区:黄桷树社区、金桥社区、焦严村、蔡湾村、筒车
  • 市川治市川治(1936年6月21日-2009年1月2日)是日本男性声优。埼玉县出身。埼玉县立熊谷高等学校毕业。市川治是在日本动画草创时期就已经相当活跃的资深声优,并带动了第一波声优热潮。
  • 双重认证双重认证(英语:Two-factor authentication,缩写为2FA),又译为双重验证、双因子认证、双因素认证、二元认证,又称两步骤验证(2-Step Verification,又译两步验证),是一种认证方法,使用两
  • 钟民 (1909年)钟民(1909年-1998年3月31日),男,江西广昌人,中华人民共和国政治人物,曾任上海市人大常委会副主任,第二、三届全国人大代表。
  • 萨姆巴尔普尔萨姆巴尔普尔(Sambalpur),是印度奥里萨邦Sambalpur县的一个城镇。总人口154164(2001年)。该地2001年总人口154164人,其中男性79914人,女性74250人;0—6岁人口16606人,其中男8619人,女7
  • 香蕉粉香蕉粉,或称青香蕉粉,通常指用青香蕉制成的面粉。传统上作为比小麦粉更经济的替代品,在非洲和牙买加有广泛使用。现在有时作为小麦粉的无麸质替代品,或是作为抗解淀粉使用。在旧