11.1
本章将了解如何使用多个线程在单进程的环境中执行多个任务,一个进程中的所有线程都可以访问该进程的组成部件
只要单个资源需要在多个用户间共享,就必须处理一致性问题
11.2线程概念
线程包含了表示进程内执行环境必需的信息,其中包括进程中标识线程的线程ID,一组寄存器值,栈,调度优先级和策略,信号屏幕字,errno变量以及线程私有数据.进程的所有信息对该进程的所有线程都是共享的,
11.3线程标识
进程ID在整个系统中是唯一的,但线程ID环同,线程ID只在它所属的进程环境中有效
11.4线程创建
新增的线程可以通过调用pthread_create来创建
11.5线程终止
单个线程可以通过下列几种方式退出,在不终止整个进程的情况下停止它的控制流
(1)线程只是从启动例程中返回,返回值是线程的退出码
(2)线程可以被同一进程中的其他线程取消
(3)线程调用pthread_exit.
进程原语和进程原语的比较
进程原语 线程原语 描述
fork pthread_create 创建新的控制流
exit pthread_exit 从现有的控制流中退出
waitpid pthread_join 从控制流中得到退出状态
atexit pthread_cancel_push 注册在退出控制时调用的函数
getpid pthread_self 获取控制流的ID
abort pthread_cancel 请求控制流的非正常退出
11.6线程同步
当某个线程可以修改变量,而其它线程也可以修改或读取这个变量的时侯,就需要对这些线程进行同步,以确保它们在访问变量的存储内容时不会访问到无效的数值
常常用三种基本同步方式:互斥,读写锁以及条件变量
转载于:https://blog.51cto.com/ghong45/44257