首页 > 编程知识 正文

aqs核心原理,原理的概念

时间:2023-05-03 19:26:55 阅读:133480 作者:2541

今天,共享使用同时编程AQS思想的CLH队列锁定原理:

CLH队列锁是Craig、Landin、and Hagersten (CLH ) locks。 CLH队列锁定也是基于链表的可扩展性、高性能、公平的旋转锁定,申请线程只通过本地变量旋转,继续轮询前驱状态,如果发现前驱释放了锁定,则结束旋转。 如果线程需要获取锁定:创建1 .的QNode,并将其中的locked设置为true,则需要获取锁定,myPred表示对前体节点的引用

2 .线程a对tail域调用getAndSet方法,使自己位于队列的末尾。 另外,获取对前体节点的引用myPred线程b需要获取锁定。 重复同样的流程。 3 .线程在前驱节点的锁定字段中旋转。 在前一个节点解除锁定之前(前一个节点的锁定值locked==false )。如果一个线程需要解除锁定,请将当前节点的locked字段设置为false,同时回收前一个节点如上所示解除锁定,然后单击CLH队列锁定的优点是空间复杂度低。 (如果有n个线程、l个锁定,并且每个线程只获取一个锁定,则所需的存储空间为o(LN ),n个线程有n个myNode,l个锁定有l个tail。 CLH队列锁定在SMP体系结构中经常使用。 Java的AQS是CLH队列锁定变体的实现,也是AQS学习的基础。 33558 www.Sina.com/SMP (系统多处理器)。 即,多处理器结构是指服务器内的多个CPU对称动作,各CPU访问存储器地址所需的时间相同。 主要特点是共享,包括CPU、内存、I/O等共享。 SMP的优点是可以保证内存的一致性。 缺点是这些共享资源很可能成为性能瓶颈。 随着CPU数量的增加,所有CPU都将访问同一内存资源,这可能导致内存访问冲突,并导致CPU资源浪费。 常用的PC机就是这样的。 非一致性存储访问,将CPU划分为由多个CPU组成的CPU模块,具有独立的本地内存、I/O插槽等。 模块之间可以通过互连模块相互访问,本地存储器(本CPU模块的存储器)访问速度远远快于远程存储器(其他CPU模块的存储器)访问速度也来自非一致性存储器访问。 NUMA很好地解决了SMP扩展问题,并且随着CPU数量的增加,对远程存储器的访问延迟远远超过本地存储器,因此不能线性地提高系统性能。 CLH的唯一缺点是在NUMA系统结构中性能较差,而在SMP系统结构中该方法非常有效。 解决NUMA系统结构的思路是MCS队列锁。 今天到处共享结束,明天开始共享AQS的具体原理和实现。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。