一、进程与线程
进程:一个正在运行的程序;
线程:进程中的一条执行路径。
二、Linux上线程实现
在Linux上没有线程的概念,在Linux上将线程看作一种特殊的进程,(与主进程共享系统资源的进程)
三、线程并发
由于没有使用线程同步进行控制,且多线程执行没有先后顺序,所以会导致结果<=预期结果
四、线程同步
信号量,互斥锁,条件变量,读写锁(之前多线程介绍过)
五、线程安全
多线程在无论怎么执行的情况下都可以得到正确的结果,则线程安全
方法:1、控制资源(信号量,互斥锁,条件变量,读写锁)
2、用可重入函数(安全的函数接口)
六、多线程调试(GDB)
info threads------查看当前所有线程的ID
thread ID ---------切换至线程
七、线程fork
注意:在fork之后,如果父进程有锁,那么子进程也会有所,此时如果线程中如果处于被锁的状态。fork之后就会阻塞
为了解决这种情况的出现,提供了一种函数;
pthread_atfork(perpare,parent,child);
void perpare(void){
pthread_mutex_lock(&mutex);
}
void parent(void){
pthread_mutex_unlock(&mutex);
}
void child(void){
pt