U盘PE| w764位旗舰版下载 | U盘装win7系统 | U盘启动 |win7pe | win10下载 |加入收藏土豆PE官网U盘PE,U盘装win7系统,win7pe,U盘启动,U盘装系统,w764位旗舰版下载站!
当前位置:主页 > 帮助中心 > 常见问题解答 >

线程常见锁策略,以及CAS相关内容

来源:http://www.tudoupe.com时间:2022-04-18

我很久没经历过这么多动乱了

希望水逆快快过去。

目录

1.线程常见锁策略

2.CAS

2.1 基于化学文摘社的“原子类”

以化学文摘社为基础的两个旋转锁。

二. 3CAS中的ABA问题

三. 同步锁的优化技术

1.线程常见锁策略

①什么是锁策略:

以下的反应不仅仅是爪哇。 任何和 " " 相关的话题 , 最有可能的都是关于以下各点。 这些属性主要被锁定实现者暗指。

②乐观锁和悲观锁:

乐观锁:

锁定冲突的用意是尽量减少冲突,减少以较低成本和更有效的方式开展的行动。

悲观锁:

由于激烈的冲突,将有更多、更昂贵、效率更低的行动。

举个例子:

当最终试验接近时,我们可以将两类人分为两类。乐观人和悲观人。乐观主义者认为这只是一个考验。没有必要那么紧张,平时学好了,随便复习复习就行。而悲观人呢,就会觉得很紧张,一直不停地复习,从而做得更多,耗费的时间更多,因此,对其它事物的习惯投资减少。显然,这是一个低影响企业。

3个读写锁以及标准交叉锁:

读写锁:

阅读和写作有一个不同的锁定程序。 总共有三个操作:读取锁、写入锁和解锁。 读取锁和读取锁之间没有相互排斥的关系,写入锁和写入锁之间只有读取锁和写入锁之间有相互排斥的关系。

普通的互斥锁:

只要两个或两个以上线索锁定同一对象,它们就可以相互击退。只有两个操作、锁和断开。

有四个重锁和四个灯锁:

重量级锁:

简单地说,它有更多的,更多的。如果锁是根据特定的内核功能执行的,它就被称为重锁。(操作系统中的锁在内核中完成各种各样的功能,例如把线封住。 )

轻量级锁:

轻量级锁是按用户-状态应用的。 (用户-州代码更有效、更容易操作。 )

但总的来说,我们认为乐观主义的锁轻轻,悲观的锁重。

有五个锁和旋转锁:

挂起等待锁:

这往往是通过内核技术实现的,而且往往较重(如典型的重量级锁)。

自旋锁:

这项工作经常通过使用用户国家代码来实现。如果较轻的(轻量级锁的常见认识)失败, 它将立即试图再次获得锁, 无限环, 直到它达到锁。 第一个锁失败, 第二个口味以闪光形式到达。 当其他线条解锁时, 锁可以尽快获得。 越快解锁, 就越有效, 越快解锁, 而不是使用 CPU 资源。 当锁期短时, 它会特别方便 。 后退 : 如果锁定时间太长, CPU 资源会被浪费 。

6个好锁和6个坏锁:

公平锁:

这里的公平锁定显示,在等待锁定时,按抵达顺序执行各种线条。

非公平锁:

它表明,许多线路等待锁,不遵守先到先得的规则,获得锁的可能性相等。

操作系统自身的线条流动是随机的(机会等同),操作系统的motex锁不是一个公平的锁。

7 可连锁,不能连锁:

可重入锁:

同一锁的线索可以锁定好几次。

不可重入锁:

只有一个锁被加到一条线上 任何额外的锁都会导致一个死锁

2.CAS

①解释CAS:

对比和开关 ,意思 :” 比较并交换 “。

②CAS具体操作:

我们假定,记忆中的原始数据五代表先前的预期值A,将需要更新,以适应新的值B。

将A和V比较,看它们是否相等。
二. 如果数字比较相等,写B至V(交换)。
三. 使行动取得成功。
3 化学文摘社虚假代码解释:
以下代码不是原子; 真正的 CAS 是来自原子的硬件指令。 这个假代码只是为了帮助理解 CAS 程序 。

④CAS的意义:

这一多线代码既提供了安全,也提供了一种新方法和方法。

2.1 基于化学文摘社的“原子类”

1 原子级基于化学文摘社的完整代码解析:

对于经常使用的班级,爪哇标准图书馆包括一系列原子班级。int, long, int array...它被密封了 它建立在..CAS标准图书馆里可以读到 java. 我不知道你在说什么,直到. 对不起,Cencret. Atomic软件包, 里面所有的课都是这样完成的. 这是很平常的.AtomicInteger其中包括获得和增加等于i++程序。

它是一条安全的线,化学文摘社比同步更有效率,因为它以原子级为基础。 synchronized这都是为了确保竞争 这两条线是互相期待的CAS它并不包含堵塞和等待的线条。

在此之后,我们使用化学文摘社进行先前进行的自我强化代码操作,同步进行:

执行结果如下:

2 额外的解释,使用以下假代码:

3 利用插图解释为什么这些自我强化程序是安全的:

以化学文摘社为基础的两个旋转锁。

带有旋转锁和解释的伪代码:

②进一步说明:

这里的旋转锁很亮 所以最好先等着瞧

二. 3CAS中的ABA问题(重点)

①什么是ABA?

我们知道,化学文摘社仅仅是一种比较活动,用来交换两个价值。似乎比较实际上是对当前价值和历史价值的比较。但这里有个麻烦发生的一切没有变化中间是换班吗?结果最终没有改变。下面的图表将帮助我们更好地了解律师协会的问题。

就好像我从成都到北京, 然后直奔北京, 然后从成都到河北, 然后从河北到北京, 然后到北京, 但是你们不知道我经历了什么。

以下是这一分析的一个例子以及插图:

愚蠢的旧铁 挖钱买。

在非登记问题方面:

有趣的提款完成后,机器被卡住了,也就是说,有趣的机器又按了一次提款。 这相当于一次两次执行的提款行动(同时执行两条线),但我们的目标是只成功一次,即50美元,余下50美元。

b. 此外,考虑基于化学文摘社的办法:

如果我们来到这里来收钱,就会出现新的问题。 现在,在有趣的时刻,当他的兄弟转移他50岁的时候,有美国律师协会的问题,而这两个巧合导致了Bug, 我们必须解决这个问题。

c. 根据化学文摘社,但不包括ABA:

因此,根据上述分析,这里只有两个行动,实际上只有一个,上述成功是由于没有提出ABA问题,然后我们将进一步审查ABA的导言。

d. CAS的分析基于ABA问题:(我们假设一个撤回,但这里我们采取两个撤回)

3ABA 解决方案:(通过包括版本号加以解决)

为将改变的数据提供版本号。是的。CAS将数据与当前值和旧值以及版本数与预期值进行比较。 如果当前版本数和前读版本数相同, 您已经完成了修改, 并增加了版本数; 如果当前版本数超过前一个版本数, 操作将被视为失败 。

三. 同步锁的优化技术

1. 同步特性:

这是一个乐观的锁和一个悲观的锁。

b. 不是阅读和写作的锁,只是标准的交叉锁。

c. 既是一个轻量级锁,也是一个重型锁。 (取决于锁的竞争程度。 )

d. a 旋转锁作为轻量级锁的一部分使用。重量水平取决于挂锁。

e. 我不知道你在说什么。

f.可重入锁

②典型的优化手段:

A. 增强/改进的锁(反映同步的自我调整)

在导言之前引入一个概念是什么:在导言之前引入一个概念是什么:在导言之前引入一个概念是什么:偏向锁

锁定实际上没有锁定; 它只是在锁定对象头中存储一个标记( 记录锁所属线条) 标记实际上没有锁定; 它只是在锁定对象头中存储一个标记( 记录锁所属线条) 。 如果没有其他线条参与竞争性锁定, 锁定操作将无法完成, 降低程序的开支 。 删除偏向锁, 并在大量参与其他线性竞赛后用轻量级锁替换它 。
简言之,部分锁只是锁的标记,实际上没有锁,好处是,当没有人竞争时,它节省了锁的费用。

我们已经通知你 旋转锁和重锁 所以我们不会再重复了

b.锁粗化/锁细化

此处的粗糙度与锁的大小有关。

(粒子大小表示锁定代码所涉的代码范围; 锁定代码范围越大, 锁定代码范围越厚; 锁定代码范围越小, 锁定代码范围越细)

那么,锁的大小是厚的还是细的?它有其自身的一系列好处:

如果锁粒子大小较大,许多线条之间的共性就会更大。
随着锁的大小的增加,锁的费用会减少。

汇编者将包括以下优化:

如果某一地点的密码锁的大小太薄,则自动确定粗粗大小。
如果两个锁之间的距离很大(它们之间的代码更多 ), 这种优化不太可能发生。 如果锁之间的间隔相对较小( 中间的代码较少 ), 这种优化很可能发生 。

c.锁消除

例如,如果你在单行中使用字符串缓冲和矢量, 它就像你锁定在单行。

例如,请考虑 StringBuffer () 。

代码:

然而,就一条线而言,这种锁定显然没有必要,浪费了资源。

因此, 编译者和 JVM 评估该锁是否可以被移除。 如果它正常的话, 它就消失了。 这意味着有别的东西不应该被锁定, 但是您无意地放置了锁, 编译者似乎没有必要添加这个锁, 所以编译者只是删除了锁 。

感谢观看~

Copyright © 2012-2014 Www.tudoupe.Com. 土豆启动 版权所有 意见建议:tdsky@tudoupe.com

土豆系统,土豆PE,win7系统下载,win7 64位旗舰版下载,u盘启动,u盘装系统,win10下载,win10正式版下载,win10 RTM正式版下载,win8下载,电脑蓝屏,IE11修复,网络受限,4K对齐,双系统,隐藏分区,系统安装不了,U盘装系统,笔记本装系统,台式机装系统,diskgenius运用,GHSOT装系统,U盘修复,U盘技巧,U盘速度,U盘不能格式化,U盘复制发生错误,U盘加密,U盘选购,开机黑屏,蓝屏,进不了系统,上不了网,打不开程序,点击无反应,系统设置,PE个性化,PE添加网络,PE维护系统

点击这里给我发消息