自旋锁:
互斥锁:
1.自旋锁不会睡眠,互斥锁会睡眠,因此自旋锁效率高于互斥锁。------自旋锁比较适用于锁使用者保持锁时间比较短的情况
2.自旋锁消耗cpu:由于一直查询,所以自旋锁一直占用cpu,互斥锁不会,自旋锁导致cpu使用效率低
3.自旋锁容易造成死锁-------比如递归调用
递归程序决不能在持有自旋锁时调用它自己,也决不能在递归调用时试图获得相同的自旋锁。此外如果一个进程已经将资源锁定,那么,即使其它申请这个资源的进程不停地疯狂"自旋",也无法获得资源,从而进入死循环。
读写锁:
读锁:允许多个线程同时持有,进行读—
写锁:只能有一个线程写
但读写锁不能同时获取,即读的时候,不允许有写锁工作,写的时候不允许读锁工作