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线程同步
当某个线程可以修改变量,而其它线程也可以修改或读取这个变量的时侯,就需要对这些线程进行同步,以确保它们在访问变量的存储内容时不会访问到无效的数值
常常用三种基本同步方式:互斥,读写锁以及条件变量