POSIX线程

✍ dations ◷ 2024-12-23 18:59:12 #应用程序接口,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'交替出现。

相关

  • 行政部门美国联邦行政部门(英语:United States Federal Executive Departments)是对于美国联邦政府中由总统指挥的行政机构总称,目前共有15个联邦行政部门;其中包含历史最为悠久的主要单
  • 克罗沙克·奥古斯特·史丁伯格·克罗(Schack August Steenberg Krogh,1874年11月15日-1949年9月13日)是一位拥有罗姆人吉普赛血统的丹麦人,在1916年到1945年间,是哥本哈根大学动物生理
  • 媒体人类学体质人类学 文化人类学 语言人类学 分子人类学 社会人类学 考古学应用人类学 民族志 参与观察 文化相对论文化 • 社会 史前史 • 人类演化 亲属 婚姻 • 家庭 物质文化 种
  • 太平洋橡树学院太平洋橡树学院(Pacific Oaks College)是位于美国加利福尼亚州帕萨迪纳的一所私立大学,成立于1945年。该学院在加利福尼亚州的奇科、萨克拉门托、萨利纳斯及圣塔克鲁兹有授课点
  • 圣玛丽山大学圣玛丽山大学(Mount Saint Mary's University)是位于美国马里兰州的一所天主教文理学院。1808年由一位法国移民成立,最初是一所教堂,是美国面积第二大的天主教大学。2015年《美
  • 韩新安韩新安(1963年-),中华人民共和国音乐学家,中国音乐家协会分党组书记,驻会副主席,秘书长,第十三届全国政协委员。
  • 反步兵地雷反步兵地雷(英语:Anti-personnel mine,别名:人员杀伤地雷)是一种针对人员的地雷,与反坦克地雷相比,反步兵地雷的炸药较少。反步兵地雷又可以分为爆炸式地雷或是碎片式地雷二种。反
  • 硫化氢钾硫化氢钾是具有化学式KHS的无机化合物,是无色的盐,由阳离子K+和氢硫根阴离子− 组成。它是硫化氢与氢氧化钾半中和的产物,用于合成一些有机硫化合物。 可通过用H2S中和KOH水溶
  • LibreswanLibreswan,一个开放源代码软件专案,在Linux平台上实作IPsec功能。因为对于Openswan名称的所有权产生争议,openswan的开发者与openswan的产品经理保罗·沃斯特(Paul Wouters)进行
  • 利普施塔特08SV利普施塔特08(德语:) 是一个位于德国北威斯特法伦瑟斯特县利普施塔特的体育俱乐部。该俱乐部由(Teutonia Lippstadt)和(Borussia Lippstadt)两家俱乐部于1997年6月4日合并