【保姆级】POSIX pthread线程库是什么?一文搞懂

简介: POSIX是统一类UNIX系统接口的国际标准,确保程序跨平台可移植;其子集pthread专规范多线程编程接口。遵循POSIX/pthread编写的程序可在Linux、BSD等系统无缝运行,具备标准化、成熟稳定、社区支持强等优势。

POSI 是 Portable Operating System Interface 的缩写,中文译为可移植的操作系统接口;最后的字母“X”代指类 UNIX 系统。


UNIX 诞生于 20 世纪 60 年代末,是操作系统的开山鼻祖,是操作系统的发源地,后来的 Windows 和 Linux 都参考了 UNIX。类 UNIX 系统(英文 Unix-like)既包括各种传统的 UNIX 系统,比如 FreeBSD、OpenBSD、Sun Solaris 等,还包括与 UNIX 相似的系统,比如 Linux、QNX、Minix 等。


读者可以这样理解,除去 Windows,几乎你所知道的每一个系统都是 UNIX 和类 UNIX 系统,而 Linux 几乎是最著名的类 UNIX 系统。


可移植的含义是,对程序稍作修改甚至不做改动,就可以在不同的操作系统上运行。


再解释一下操作系统接口。大家都知道,操作系统负责管理计算机中的各类资源,包括内存、CPU、I/O 设备、网络连接、文件资源等。为了方便应用程序使用这些资源,操作系统提供了一系列函数(方法)供程序调用,我们习惯将这些函数(方法)统称为接口(Application Programming Interface,简称 API)。


总体上讲,POSIX 是专门为统一类 UNIX 系统接口发布的标准(规范)。这意味着,只要按照 POSIX 标准调用系统接口,编写出来的程序就能具备良好的可移植性,就可以在任何兼容 POSIX 标准的类 UNIX 系统上运行。

注意,POSIX 标准只是规定了接口的命名规范,仅此而已,并没有对各个接口的具体实现做要求。

pthread规范

从上世纪 90 年代起,POSIX 标准经过了 30 多年的更新、迭代,对文件系统、进程管理、线程管理、信号处理、网络编程等诸多方向的系统接口都做了命名规范。


在 POSIX 标准中,和多线程编程相关的这部分接口规范,我们习惯统称为 pthread(POSIX threads 的缩写)。


也就是说,pthread 和 POSIX 一样,本质上都是接口规范。pthread 是 POSIX 的子集,只包含 POSIX 标准中的一部分接口规范,这些接口全部和多线程编程有关。

平时大家提到的 pthread 库,指的就是遵循 pthread 规范的多线程库。

POSIX标准的优势

编写多线程程序,必须调用操作系统提供的接口才能实现。在实际开发中,我们通常使用一些封装好系统接口的线程库,编写程序会更加方便、灵活和高效。


注意,线程库有很多种,有些遵循 POSIX 标准,有些不遵循。


例如,早在 Linux 2.6 版本之前,使用最广泛的线程库叫做 LinuxThreads,它就不遵循 POSIX 标准。不过, 由于 LinuxThreads 线程库自身设计存在缺陷,如今已经弃用,被更强大的 NPTL 线程库替代,而 NPTL 库是遵循 POSIX 标准的。


再举个例子,C++11 标准引入了对多线程编程的支持,添加了很多用于实现多线程编程的函数(方法、类),它们的命名规范也没有严格遵循 POSIX 标准,而是采用了 C++ 自身的命名规范和语法风格。


虽然 POSIX 标准不是 Linux 多线程编程的唯一选择,但它在实际开发中得到了广泛的认可和支持。下面列举了几条 POSIX 标准的优势:

  • 跨平台:遵循 POSIX 标准编写的程序,稍作修改甚至不修改就可以在多个类 UNIX 系统中运行;
  • 标准化:POSIX 标准制定了一整套类 UNIX 系统接口的命名规范,这大大降低了初学者的学习成本,只要掌握了 POSIX 标准中接口的用法,就可以在不同的类 UNIX 系统中编写程序;
  • 成熟、稳定:POSIX 标准自上世纪 90 年代出发布,已经广泛使用了很多年,经过了大量的测试和验证,成熟性和稳定性都能得到保证;
  • 社区支持:POSIX 标准的维护是由一个开放的社区负责的,这个社区包含很多组织( IEEE 标准委员会、开源社区等)和个人,共同推动 POSIX 标准的发展。这意味着,初学者学习和使用 POSIX 标准时可以找到很多有价值的资料。


因此本教程讲解多线程编程,采用的是遵循 pthread 规范的线程库,读者安装一个遵循 POSIX 标准的类 UNIX 系统(我使用的是 Ubuntu),就可以跟随本教程学习多线程编程了。

总结

POSIX 是一套专门为统一类 UNIX 系统接口发布的标准。pthread 是 POSIX 的子类,代指那些和多线程编程相关的接口规范。


编写多线程程序,可以直接调用操作系统预留的接口实现,也可以借助线程库实现,后者在实际开发中更常见。


在类 UNIX 系统中,遵循 pthread 规范、使用最广泛的多线程库叫做 NPTL(Native POSIX Thread Library)。自 Linux 2.6 版本之后,NPTL 取代了早期的 LinuxThreads 线程库,成为 Linux 系统中默认的多线程库,本教程使用的也是 NPTL 线程库。

相关文章
|
3月前
|
人工智能
Qwen3.8抢先体验!正式版即将发布并开源!
千问Qwen3.8即将开源,参数达2.4T,进化速度以“天”计,实力媲美Fable 5。预览版Qwen3.8-Max已上线阿里Token Plan等平台,限时优惠:日间Credits低至1折,夜间更优,个人/团队版月付仅35元起!
5527 165
|
1天前
|
Ubuntu Linux iOS开发
【2026最新版】VirtualBox下载安装保姆级教程(从零搭建VirtualBox虚拟机)
VirtualBox 是免费开源的跨平台虚拟机软件,支持 Windows/macOS/Linux 宿主机,可同时运行多个操作系统(如 Windows、Linux),用于测试、开发与学习。具备文件共享、剪贴板互通、USB 设备支持等功能,需安装扩展包启用高级特性。图形性能弱于 VMware,但轻量易用。(239 字)
|
1天前
|
Java Windows
【保姆级】Java配置环境变量图文教程,超级详细
本文详细介绍了Windows 10系统下JDK环境变量配置的完整步骤:包括设置JAVA_HOME变量、将%JAVA_HOME%\bin添加至Path路径,以及通过cmd执行java -version命令验证配置是否成功,图文并茂,操作清晰易懂。
|
2天前
|
存储 关系型数据库 MySQL
PolarDB 和 RDS MySQL :架构、弹性与成本的一份选型指南
PolarDB 和 RDS MySQL 都能跑同一套代码,账单和扩容方式却完全不同。这篇从存储计算分离与实例一体讲起,逐条对比弹性、只读节点上限、高可用 RTO/RPO、存储按量与存储包的价格算例,并给出迁移要点和可直接照勾的选型清单:什么业务选 RDS,什么业务该上 PolarDB。
|
18天前
|
API 开发工具 数据安全/隐私保护
我的阿里云 AK 差点就泄露了:一次最小权限改造实录
同事在群里发了张截图,我们仓库的 .env 里躺着一把主账号 AK——四年没换、三个团队共用。从止血到收权限再到让密钥从代码里彻底消失,完整记录这次改造的每一步和自查清单。
126 3
|
18天前
|
人工智能 缓存 Java
2026年美团职级薪资:测试开发L5—L10能拿多少?附AI测试社招面试题
本文解析2026年美团测试开发社招趋势:L5-L10年包44万–419万,股权占比随职级显著提升;能力要求已从传统自动化进阶为“基本功+AI测试”,涵盖Agent评测、大模型UI测试、AI Coding质量保障等实战方向,并附薪资、职级、面试与技能树全景指南。
|
1月前
|
人工智能 自然语言处理 API
觉得阿里云大模型价格太高怎么办?四种便宜购买与使用方法分享
本文针对阿里云大模型“能力强但调用成本高”的普遍痛点,梳理了一套可落地的全链路省钱方案。从开通百炼领取超7000万Tokens新人免费额度起步,叠加夜间错峰4折起的Night Plan活动,再搭配Token Plan订阅与AI通用型节省计划,四层优惠叠加后,实际调用成本可降至普通按量付费的三到五成,帮助个人开发者与团队大幅降低大模型落地的综合开支。
480 12
|
2天前
|
人工智能 运维 安全
AI 赋能多渠道自适应钓鱼训练技术与实践研究
本文剖析AI时代自适应钓鱼训练技术,以Hoxhunt平台为样本,解析多渠道仿真、实时微培训、AI语音交互等核心模块,强调从“合规打卡”转向“行为改变”,指出其可提升员工防御能力,但不能替代技术防护,需构建人机协同的纵深防御体系。(239字)
31 0
|
2天前
|
运维 监控 安全
网络间谍工具处置事件下 Flax‑Typhoon 威胁特征与防御对策研究
本文分析Flax-Typhoon组织利用MicroScan(自动化扫描)与FishHub(定向钓鱼)工具实施的轻载荷APT间谍攻击,揭示其“少恶意代码、多滥用合法组件”的新型战术特征,指出单纯扣押域名等外部处置效果有限,强调需构建覆盖事前资产排查、事中行为检测、事后溯源处置的闭环防御体系。(239字)
38 0