● 线程
进程的所有信息都被自己的线程共享,包括代码、全局内存、堆、栈、文件描述符。
线程拥有自己的信息,包括线程ID、一组寄存器值、栈、调度优先级和策略、信号屏蔽字、errno变量以及线程的私有数据。
线程id(pthread_t)只在进程里有效。
一个进程必须有一个线程作为它的指令执行体。
进程退出时,会强制清除它的所有线程。
创建线程:pthread_create
线程退出的三种方式:1. 在启动例程中直接返回;2.被其他线程取消;3.调用pthread_exit
取消本进程的其他线程:pthread_cancel
线程同步的方式:
1. 互斥锁 pthread_mutex_t
pthread_mutex_init //申请
pthread_mutex_destory //销毁
pthread_mutex_lock //加锁
pthread_mutex_trylock //尝试加锁,不会阻塞
pthread_mutex_unlock //释放锁
避免死锁的方法:使用pthread_mutex_trylock,如果无法获得锁,就试着放弃自己占有的锁,等一段时间再重新获取所有锁