UNIX环境高级编程学习笔记系列-------6,线程
概念性的大家都知道,不做赘述。
1,线程创建
新增线程可以通过pthread_create创建。
2,线程终止
进程终止,线程终止,发送到线程的信号就回终止整个进程。
单个线程可以通过3种方式退出:
(1)简单地从启动例程中返回,返回值是线程的退出码
(2)可以被统一进程的其他线程取消
(3)调用pthread_exit
3,线程同步
当一个线程可以修改的变量其他线程也可以修改和使用的时候,我们就需要对这些线程进行同步,确保它们在访问变量的存储内容是不会访问到无效的值。
3.1 互斥量
互斥量从本质上说是一把锁,是用pthread_mutex_t数据类型表示的。
3.2 避免死锁
如果线程师徒对同一个互斥量加锁两次,那么他自身就会陷入死锁状态。可以通过仔细控制互斥量加锁的顺序来避免死锁的发生。
3.3 读写锁
读写锁和互斥量类似,不过读写锁允许更高的并行性,互斥量要么是锁住状态,要么是不加锁状态,而且只有一个线程可以对其加锁。
3.4 条件变量
条件本身是由互斥量保护的,线程在改变条件状态之前必须首先锁住互斥量。
3.5 自旋锁
自旋锁与互斥锁类似,但它不是通过休眠使进程阻塞,而是在获取锁之前一直处于忙等阻塞状态,可用于以下情况:锁被持有时间短,而且线程并不希望在重新调度上话费太多成本。