操作系统专栏——线程同步之读写锁
之前两篇文章粗劣说了互斥锁和自旋锁的原理,从本质上来说都是针对线程同步问题进行的一定的措施。互斥锁是直接去阻断另一个线程的访问,而自旋锁是让线程进入死循环不断申请资源。
而读写锁针对互斥锁和自旋锁都进行了一定的改进。
主要根据临界资源,进行了考量:
我们在实际的开发环境中,很容易就会碰见针对数据库的资源多读少写的情况,更多的是select居多。而读取并不会改变临界资源的值。如果频繁加锁,释放锁,那么对于性能会造成极大的损失。
是否存在一种更有效的同步方法呢?
没错,就是读写锁。
读写锁可以做到:
- 允许多个线程读
- 但只允许一个线程写