• Welcome to the world's largest Chinese hacker forum

    Welcome to the world's largest Chinese hacker forum, our forum registration is open! You can now register for technical communication with us, this is a free and open to the world of the BBS, we founded the purpose for the study of network security, please don't release business of black/grey, or on the BBS posts, to seek help hacker if violations, we will permanently frozen your IP and account, thank you for your cooperation. Hacker attack and defense cracking or network Security

    business please click here: Creation Security  From CNHACKTEAM

Recommended Posts

ReadWriteLock 接口详解

这是我自己看了读写锁接口源代码的评论后写的知识分享博客。

读写锁的成分是什么?

read Lock read Lock();

只要没有写锁,读锁就可以同时被多个线程拥有。

write Lock write Lock();

锁是独占的

所有读写锁的实现都必须保证写锁的内存同步效果也应该适用于读操作,即获得读锁的线程应该能够看到之前写锁所做的所有更新。

读写锁与互斥锁的优劣比较

读写锁与互斥相比,在什么情况下性能更高?

它取决于数据被读取的频率、读写操作的持续时间以及访问数据的冲突。

也可以说是同时读写数据的线程数量。

例如,一个集合的数据初始化后,很少被修改,但经常被搜索,这是读写锁的理想用途。

什么时候共享读写锁不合适?

如果数据更新频繁,数据大部分时间会被独占,使用读写锁的并发性几乎不会增加。

此外,如果读操作花费的时间很短,则读写锁(读写锁本质上比互斥锁更复杂)的实现所导致的消耗将主导执行成本,尤其是

当读写锁的实现仍然通过一小段代码序列化所有线程的时候。

最终只有分析和测量才能评估一个读写锁是否适合你的应用。

读写锁的实现必须要做的决策

当写操作释放写锁时,写操作和读操作都在等待,因此确定是授予读锁还是写锁。

优先级写操作更多,因为写操作一般较短且不频繁。

优先读操作较少,因为如果读操作频繁且时间长,会导致写操作等待时间长。

当读操作是活动的并且写操作正在等待时,读操作请求读锁定以确定是否授予读锁定。

优先读取操作将无限期推迟草写站。

优先写会降低并发的可能性。

确定锁是否可以重新进入。

带有写锁的线程可以重复获取它吗?

当我有一个写锁时,我能得到一个读锁吗?

可以再次获取读锁吗?

写锁可以降级为读锁,不允许写操作吗?

读锁可以升级为写锁并优先于其他等待的读写操作吗?

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now