深入理解 Pthreads 线程编程
1. 线程同步规则与 Pthreads 概述
线程同步需要清晰的规则,例如必须先获取互斥锁 A 再获取 B。随着程序复杂度和同步需求的增加,执行这些规则会变得更加困难,因此要尽早规划并进行清晰的设计。
在 Linux 系统中,内核仅提供诸如 clone() 系统调用等底层线程原语,大部分线程库位于用户空间。许多大型软件项目都有自己的线程库,如 Android、Apache、GNOME 和 Mozilla 等,C++11 和 Java 等语言也提供了标准库线程支持。不过,POSIX 通过 IEEE Std 1003.1c - 1995 对线程库进行了标准化,即 POSIX 线程,简称 Pthreads。在 Unix 系统上,Pthreads 是 C 和 C++ 主要的线程解决方案。
2. Linux 线程实现
Pthreads 作为标准,在 Linux 中由 glibc(Linux 的 C 库)实现。随着时间推移,glibc 提供了两种不同的 Pthreads 实现:
| 实现名称 | 特点 | 缺点 |
|---|---|---|
| LinuxThreads | 最初的 Pthread 实现,提供 1:1 线程模型,使用现有 Unix 接口实现 POSIX 线程,如通过信号处理线程间通信 | 缺乏内核支持,需要“管理器”线程协调活动,对大量线程的扩展性差,不完全符 |
超级会员免费看
订阅专栏 解锁全文
2

被折叠的 条评论
为什么被折叠?



