学习复杂的技术一定要通过简单的生活事例去理解,和加深记忆,不然你绝对掌握不了!锁用在高并发,多线程模型当中,用于解决共享资源的安全问题!防止数据错误!下面分别用事例说下这几种锁机制:1,互斥锁:也叫阻塞锁,就像上wc,同一个WC不可能容纳两个人(线程)同时进行吧?一个人在上的时候,把门关上了,另一个人只能一直等着,这就是互斥锁(只有一个能执行)!2,条件锁:也叫条件变量锁,两个人去酒店吃饭,你去上WC的时候,发现里面有人(别的线程在执行)在上,敲了敲门,里面的人说:你先再去吃会,等我好了我叫你哈!然后你回去继续等着!(无竞争),等到他好了叫你了(唤醒线程),你才去继续执行!3,读写锁:同一个场景,同一个坑位!酒店人太多了,上厕所挤不过来!怎么办呢?一块小便吧(同享同一个坑位,小便,读锁共享),上大号怎么办呢?是只能一个人啊(写锁是一个线程独占)!解决大量的小便阻塞坑位的问题!4,自旋锁:是同一个场景,同一个坑位!一个人已经占了坑了,你很急啊,要拉裤子了,怎么办呢?一直敲门(循环检索是否可以获得锁),同时说,我好急啊!直到里面的人不胜其烦出来了,你进去愉快的上厕所(执行线程)了!这个过程中你一直在敲门(一直使用CPU资源)!有定时锁,轮询锁,对象锁,类锁,显示锁,隐式锁等下次再举例吧!别问我为什么,因为你没关注我....。

如何理解互斥锁、条件锁、读写锁以及自旋锁,它们的区别在哪?

如何理解互斥锁、条件锁、读写锁以及自旋锁,它们的区别在哪

学习复杂的技术一定要通过简单的生活事例去理解,和加深记忆,不然你绝对掌握不了!锁用在高并发,多线程模型当中,用于解决共享资源的安全问题!防止数据错误!下面分别用事例说下这几种锁机制: 1,互斥锁:也叫阻塞锁,就像上wc,同一个WC不可能容纳两个人(线程)同时进行吧?一个人在上的时候,把门关上了,另一个人只能一直等着,这就是互斥锁(只有一个能执行)!2,条件锁:也叫条件变量锁,两个人去酒店吃饭,你去上WC的时候,发现里面有人(别的线程在执行)在上,敲了敲门,里面的人说:你先再去吃会,等我好了我叫你哈!然后你回去继续等着!(无竞争),等到他好了叫你了(唤醒线程),你才去继续执行!3,读写锁:同一个场景,同一个坑位!酒店人太多了,上厕所挤不过来!怎么办呢?一块小便吧(同享同一个坑位,小便,读锁共享),但是上大号怎么办呢?还是只能一个人啊(写锁还是一个线程独占)!解决大量的小便阻塞坑位的问题!4,自旋锁:还是同一个场景,同一个坑位!一个人已经占了坑了,但是你很急啊,要拉裤子了,怎么办呢?一直敲门(循环检索是否可以获得锁),同时说,我好急啊!直到里面的人不胜其烦出来了,你进去愉快的上厕所(执行线程)了!这个过程中你一直在敲门(一直使用CPU资源)! 还有定时锁,轮询锁,对象锁,类锁,显示锁,隐式锁等下次再举例吧!别问我为什么,因为你还没关注我.... 。


文章TAG:互斥  读写  自旋  
下一篇