3.8-3.11线程同步、互斥锁、死锁、读写锁

目录

1.线程同步

2.互斥锁/互斥量

3.死锁

4.读写锁


1.线程同步

3.8-3.11线程同步、互斥锁、死锁、读写锁_第1张图片


2.互斥锁/互斥量

3.8-3.11线程同步、互斥锁、死锁、读写锁_第2张图片

3.8-3.11线程同步、互斥锁、死锁、读写锁_第3张图片

线程A锁定互斥量M后,线程B也想锁定互斥量M,此时B会被阻塞,那么B要阻塞多久呢?或者说A解锁互斥量M之后B怎样知道呢?

B线程可以一直循环进行判断,但是这种方法中B线程占用了宝贵的处理时间去反复检测;

B线程还可以先休眠一会儿,再去检查,但是这样的话,休眠多久合适呢?不好说;

还有一种比较好的方法是使用条件变量。当某个线程已经确定条件得到满足,它就可以通知一个或者多个正在条件变量上进行等待的线程,唤醒它们并让它们继续处理。

 

 

 

3.8-3.11线程同步、互斥锁、死锁、读写锁_第4张图片


 

3.死锁

3.8-3.11线程同步、互斥锁、死锁、读写锁_第5张图片


4.读写锁

3.8-3.11线程同步、互斥锁、死锁、读写锁_第6张图片

3.8-3.11线程同步、互斥锁、死锁、读写锁_第7张图片


 

 

 

 

 

 

你可能感兴趣的:(Linux高并发服务器开发笔记,线程同步,互斥锁,死锁,读写锁)