ReentrantReadWriteLock

来源:互联网 发布:php登陆页面完整代码 编辑:程序博客网 时间:2024/04/29 12:29

一、原理

read write lock 读写锁

程序对一个资源的访问,一般可分为两种目标,一种是读取资源的信息,另一种是修改资源的信息,两种操作分为:读操作和写操作。
在程序对一个资源进行读操作时,是允许其他程序也可以对资源进行读操作的,也可以另一种说法,读操作是共享的,因此,读写锁中的读锁也叫共享锁;
在程序对一个资源进行写操作时,是不允许其他程序也去访问资源的,不管是写还是读操作都是不允许,写操作是排他的,独占的,因此,读写锁中的写锁也叫独占锁。
有时读写锁也会有共享-独占锁的说法。
由于读写锁的读操作是可以共享的,允许多个读操作同时进行,而写操作是独占的,只能让一个线程独占资源,其他读写操作都是阻塞的,所以读写锁适用于读操作比较多的资源。

1.读写锁处于写操作时,其他所有对资源的访问,不管是读还是写操作都要阻塞等候写操作的完成;
2.读写锁处于读操作时,所有希望对资源进行读操作的都可以得到锁进行读操作,而写操作则要阻塞等待;

3.读写锁处于读操作时,如果有线程希望对资源得到写锁,则读写锁会阻塞所有的读操作,这样可以避免写操作长时间阻塞等待写操作完成后再释放锁。

(未完待续)

原创粉丝点击