博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ReadWriteLock(读写锁)
阅读量:3926 次
发布时间:2019-05-23

本文共 534 字,大约阅读时间需要 1 分钟。

在这里插入图片描述

在读写锁中,初试状态下owner为null,writecount和readwrite都为0。

当写操作去争抢锁的时候,先去判断readcount是否为0,为0则再去判断writecount;

读操作的时候,先去判断writecount是否为0,为0则直接去进行读操作,readcount加1;如果锁已经被占有,则进入等待队列。

概念

维护一对关联锁,一个只用于读操作,一个只用于写操作;读锁可以由多个读线程同时持有,写锁是排他的。同一时间,两把锁不能被不同线程持有。

适用场景

适合读取操作多于写入操作的场景,改进互斥锁的性能,比如:集合的并发线程安全性改造、缓存组件。

锁降级

指的是写锁降级称为读锁。持有写锁的同时,再获取读锁,随后释放写锁的过程。写锁是线程独占,读锁是共享,所以写—>读是降级。(读—>写,是不能实现)

ReadWriteLock用了一个int存储了两个count (readcount和writecount) 值。

在这里插入图片描述

将32位字符分为前16位和后16位,前16位存储readCount,后16位存储writeCount,所以前面说的readcount和writecount其实是一个东西,所以不会存在两个线程同时对读操作和写操作进行修改这个问题。

转载地址:http://kqugn.baihongyu.com/

你可能感兴趣的文章
学术英语 | (8) WordList7
查看>>
概率论与数理统计 | (1) 概率论初步Part One
查看>>
概率论与数理统计 | (2) 概率论初步Part Two
查看>>
概率论与数理统计 | (3) 随机变量
查看>>
学术英语 | (9) WordList8
查看>>
概率论与数理统计 | (4) 二元随机变量Part One
查看>>
学术英语 | (10) WordList9
查看>>
李航机器学习 | (2) 统计学习方法(第2版)笔记 --- 感知机
查看>>
动手学PyTorch | (33) 通过时间反向传播
查看>>
动手学PyTorch | (35) 长短期记忆(LSTM)
查看>>
动手学PyTorch | (37) 优化与深度学习
查看>>
动手学PyTorch | (39) 小批量随机梯度下降
查看>>
动手学PyTorch | (41) Adagrad算法
查看>>
动手学PyTorch | (44) Adam算法
查看>>
动手学PyTorch | (59) 微调(fine-tuning)
查看>>
吴恩达深度学习 | (16) 卷积神经网络专项课程第一周学习笔记
查看>>
LaTex论文排版 | (20) LaTex首行缩进
查看>>
吴恩达深度学习 | (24) 序列模型专项第二周学习笔记
查看>>
深度学习 | (2) 二分类、多分类与多标签分类的区别与损失函数
查看>>
LaTex论文排版 | (21) 图表caption居中显示
查看>>