POSIX-threads-programming-tutorials
POSIX-threads-programming-tutorials copied to clipboard
Summaries and notes on pthreads programming.
POSIX 多线程程序设计
本项目所有内容摘录自《POSIX多线程程序设计》与《Linux多线程服务端编程:使用muduoC++网络库》部分章节,简化了书中的内容,并提供了完整的源代码实现。
编译、运行
前提,你需要安装 CMake。所有章节源代码都放在 src 目录下,你可以直接编译后运行。
git clone https://github.com/Veinin/programming-with-POSIX-threads-tutorials.git
cd programming-with-POSIX-threads-tutorials
./build.sh
运行实例代码:
$ ./bin/barrier_main
00: (10)0000045001 0000045002 0000045003 0000045004 0000045005 0000045006
01: (11)0000055001 0000055002 0000055003 0000055004 0000055005 0000055006
02: (12)0000065001 0000065002 0000065003 0000065004 0000065005 0000065006
03: (13)0000075001 0000075002 0000075003 0000075004 0000075005 0000075006
04: (14)0000085001 0000085002 0000085003 0000085004 0000085005 0000085006
目录
-
概述
- 术语定义
- 线程的好处
- 线程的代价
- 选择线程还是不用线程
- POSIX 线程概念
- 异步编程举例
-
线程
- 建立和使用线程
- 线程生命周期
-
同步
- 不变量、临界区和谓词
- 互斥量
- 条件变量
-
使用线程方式
- 流水线
- 工作组
- 客户/服务器
-
线程高级编程
- 一次性初始化
- 属性
- 取消
- 线程私有数据
- 线程实时调度
-
POSIX 针对线程的调整
- 多线程与fork
- 多线程与exec
- 多线程与signal
- 多线程与stdio
- 进程结束
- 线程安全函数
-
线程扩展
- 栅栏(Barriers)
- 读/写锁(Read-Write Lock)
- 自旋锁(Spin Locks)
- 信号量(Semaphore)
- 工作队列
-
线程同步精要
- 线程同步四项原则
- 互斥器
- 条件变量
- 不要使用读写锁和信号量