POSIX线程

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

相关

  • Escherich特奥多尔·埃舍里希(Theodor Escherich 1857年11月29日-1911年2月15日)德国奥地利儿科医生、格拉茨大学和维也纳大学教授。他发现了大肠杆菌并确定了其特性。1885年埃舍里希尝
  • 联邦州德国行政区划是指德意志联邦共和国现有的垂直行政结构。德国行政结构的最初特征是由于联联邦州制,必须在两个政府级别(联联邦州级(德语:Bundesebene (Deutschland))和州级)之间进
  • 瓜达洛普山瓜达洛普山国家公园(英语:Guadalupe Mountains National Park)是位于美国得克萨斯州西部瓜达洛普山脉的一座国家公园,得克萨斯州的最高地点瓜达洛普山就位于这里。瓜达洛普山面
  • 疣猴属疣猴属(学名:),灵长目、猴科的一属,包括五种:
  • 克雷司美尔克雷司美尔值是在给定的条件下,油脂在等量乙醇(92%)和戊醇混合溶剂中在较高温度溶解后,逐渐冷却至溶液发生混浊时的温度数值。
  • 岳少岳少是在罗尔德·达尔笔下《查理与巧克力工厂》中一个十分贪吃的角色。他是众多角色中第一个获得幸运金卡及第一个被逐出参观团的。岳少被逐离参观队伍是因为他喝了王卡卫的
  • 布伦丹克朗弗特的圣布伦丹(爱尔兰语:Naomh Breandán;冰岛语:Brandanus,约484年–约577年),亦称“航行者”,“旅行者”,或“莽夫”,爱尔兰早期圣徒,是大西洋探险故事的英雄。圣布伦丹曾在爱尔
  • 李小鹏李小鹏可能指:
  • 伊丹十三奖伊丹十三奖(日语:伊丹十三賞)是为了纪念日本导演伊丹十三设立的奖项,奖励日本国内于各领域活跃的创作者。由ITM伊丹记念财団、一六本舗主办。伊丹十三奖第一回在2009年3月颁发,由
  • 都道府县厅所在地都道府县厅所在地(日语:都道府県庁所在地/とどうふけんちょうしょざいち  */?)是指日本的都厅、道厅、府厅、县厅,即都道府县政府的所在地点,根据日本《地方自治法(日语:地方自治