天天看点

UNIX环境高级编程学习笔记系列-------6,线程

概念性的大家都知道,不做赘述。

1,线程创建

        新增线程可以通过pthread_create创建。

UNIX环境高级编程学习笔记系列-------6,线程

2,线程终止

       进程终止,线程终止,发送到线程的信号就回终止整个进程。

       单个线程可以通过3种方式退出:

     (1)简单地从启动例程中返回,返回值是线程的退出码

     (2)可以被统一进程的其他线程取消

     (3)调用pthread_exit

3,线程同步

      当一个线程可以修改的变量其他线程也可以修改和使用的时候,我们就需要对这些线程进行同步,确保它们在访问变量的存储内容是不会访问到无效的值。

3.1 互斥量

      互斥量从本质上说是一把锁,是用pthread_mutex_t数据类型表示的。

UNIX环境高级编程学习笔记系列-------6,线程

3.2 避免死锁

      如果线程师徒对同一个互斥量加锁两次,那么他自身就会陷入死锁状态。可以通过仔细控制互斥量加锁的顺序来避免死锁的发生。

3.3 读写锁

      读写锁和互斥量类似,不过读写锁允许更高的并行性,互斥量要么是锁住状态,要么是不加锁状态,而且只有一个线程可以对其加锁。

UNIX环境高级编程学习笔记系列-------6,线程

3.4 条件变量

      条件本身是由互斥量保护的,线程在改变条件状态之前必须首先锁住互斥量。

3.5 自旋锁

      自旋锁与互斥锁类似,但它不是通过休眠使进程阻塞,而是在获取锁之前一直处于忙等阻塞状态,可用于以下情况:锁被持有时间短,而且线程并不希望在重新调度上话费太多成本。

继续阅读