第十二章:线程库
第十二章:线程库
12.1 线程的基本概念
线程的作用
线程的主要功能:
- 并发执行
- 资源共享
- 提高响应性
- 简化编程模型
示例代码:
1 | #include <stdio.h> |
编译和运行命令:
1 | # 编译 |
线程的实现
线程的实现方式:
- 用户级线程
- 内核级线程
- 混合实现
- 线程调度
示例代码:
1 | #include <stdio.h> |
编译和运行命令:
1 | # 编译 |
12.2 线程同步
互斥锁
互斥锁的使用:
- 初始化锁
- 加锁
- 解锁
- 销毁锁
示例代码:
1 | #include <stdio.h> |
编译和运行命令:
1 | # 编译 |
条件变量
条件变量的使用:
- 初始化条件变量
- 等待条件
- 发送信号
- 销毁条件变量
示例代码:
1 | #include <stdio.h> |
编译和运行命令:
1 | # 编译 |
12.3 线程池
线程池的实现
线程池的主要组件:
- 任务队列
- 工作线程
- 线程管理
- 任务调度
示例代码:
1 | #include <stdio.h> |
线程池的使用
线程池的使用方法:
- 创建线程池
- 添加任务
- 等待任务完成
- 销毁线程池
示例代码:
1 | #include <stdio.h> |
编译和运行命令:
1 | # 编译 |
实践练习
- 线程基本操作实验
1 | # 创建测试程序 |
- 线程同步实验
1 | # 创建同步测试程序 |
- 线程池实验
1 | # 创建线程池测试程序 |
思考题
- 线程的主要功能是什么?
- 线程同步的方法有哪些?
- 什么是线程池?它有什么优点?
- 如何实现线程安全?
- 线程和进程的区别是什么?
参考资料
- 《程序员的自我修养:链接、装载与库》
- POSIX Threads 文档
- System V ABI
- ELF 文件格式规范
- GNU Binutils 文档