共查询到10条相似文献,搜索用时 62 毫秒
1.
《计算机应用与软件》2017,(7)
自组织链表是一种特殊的链表。与静态链表相比,将自组织链表应用于并发环境下,需要考虑自组织操作对链表状态的改变。因此,对于并发自组织链表,尤其是具有非阻塞特性的自组织链表的研究更加复杂。近些年来,并发链表的研究成果显著,而关于并发自组织链表算法的研究屈指可数。在这种背景下,提出了一种基于MTF(Move-To-Front)自组织规则的无锁自组织链表,证明了该链表算法实现了在集合上的插入、删除,以及查找操作,并且算法的实现是无锁的。实验结果表明,该算法的性能在大多数情况下都优于Harris算法,具有一定的使用价值。 相似文献
2.
《软件》2019,(6):185-190
HashMap内存数据结构存在相当广泛的应用场景,通过Hash函数的Key直接获取对应的值,能够确保搜索的时间复杂度为O(1)。HashMap数据结构存在哈希冲突与线程安全问题,悲观锁机制实现线程安全的方法存在很大的性能开销。本文提出了基于优化的CAS算法,实现线程安全的哈希映射数据结构,内部采用数组、链表和红黑树实现了高并发环境下读写操作。通过增加版本戳避免CAS算法的ABA问题,CAS算法实现的无锁方式避免了锁竞争的开销,使用红黑树来优化链表,确保大规模数据集的检索时间复杂度保持O(logn)。支持多线程扩容操作,在执行效率方面有良好的表现。通过大规模的并发压力测试,验证了该数据结构在性能上有稳定的提升。 相似文献
3.
4.
5.
动态内存管理的问题对无锁动态数据结构的性能尤为关键,因为多线程环境下的动态内存管理涉及开销较高的同步操作。提出一种构建用于动态无锁数据结构的内存池的方法来减少动态内存使用和与之相伴的动态内存管理开销。该方法通过平衡线程的动态内存消耗来减小内存开销,利用本方法构建的内存池基于线程私有的支持节点窃取的无锁循环队列。本方法具有以下优点:a)用本方法构建的内存池是无锁的;b)能够平衡线程的堆内存消耗;c)可以方便地与动态无锁数据结构集成。实验结果显示,用该方法构造的资源窃取型内存池扩展性较强,且能够在高负载下有效降低无锁数据结构的堆内存消耗和操作执行时间;平衡算法在很大程度上决定内存消耗量,内存池在高负载下的扩展性也受到它所用的数据结构自身多线程访问性能的影响。 相似文献
6.
本文提出一种报文分发的流水线模型,该模型中的共享数据缓冲区操作采用了动态内存分配的无锁队列算法。该算法以链表形式组织队列,避免了采用循环数组结构引起的缓冲区长度限制和内存浪费;与通用的链表队列算法相比具有实现简洁,执行效率更高,并在试验环境下验证了其性能指标。 相似文献
7.
基于链表结构的概念格渐进式构造 总被引:6,自引:0,他引:6
Godin算法是最典型的,也是最常用的概念格渐进式构造算法之一。本文给出了一种基于链表结构的Godin算法实现方法,该方法采用链表结构组织格结点,并利用索引表,实现了对概念格子结点的快速查找,提高了概念格渐进式构造的效率。最后,以天体光谱数据作为形式背景,实验结果表明,该方法的构造效率要明显优于基于顺序结构的Godin算法。 相似文献
8.
基于OpenMP实现了一种基于空腔交叠互斥准则与无锁原子操作的Delaunay三角化增量插点细粒度并行算法。在串行算法的基础上,对点集引入Hilbert排序,使相邻点在几何上亦相邻。引入互斥机制--仅当各空腔无公共单元及公共相邻边时,才可同时插入,根据Delaunay局部性准则可保证整个网格都具备Delaunay属性。每个单元用一个原子变量标记该单元是否已被占有,在计算Delaunay空腔时,各线程将试图写入该原子变量,但本竞争机制保证有且仅有一个线程能成功获得该单元的所有权,以保证算法的互斥性。经数值实验表明,对于107的点集,该算法在16核下加速比可达7.06倍。 相似文献
9.
目前的动态查找表都是树结构,对于结点量很大的情况,其所需存储空间过大且查找效率低的缺点突出.对此.文章设计了一种新的动态查找表,将有序静态链表结构与结点群"逆序插入"算法相结合,相比树结构动态查找表有两个优势:1.所需存储空间小;2.结点群的结点数越多,则动态查找效率越高.该方法的要点是:先将已有结点用静态链表构造出一个有序表,简称"主表".若某"结点群"要插入该主表中,需将该结点群用静态链表构造成一个有序"副表",然后用逆序算法对副表中各结点查找其在主表中的插入点,并从对应的插入点与主表进行链接,最后将链接好的主表和副表一次性收集到一个新的静态链表中.类似的"逆序删除"也可以删除整个副表的结点. 相似文献
10.
Java虚拟机使用锁机制来实现多线程共享数据结构的同步.锁机制维护的临界区通常对共享数据结构只进行读操作.只读锁是指当某个线程持有锁在只读临界区时,其他线程可以直接进入只读临界区而无需等待.只读锁能极大地提高锁机制的同步性能.Java虚拟机的锁机制可分为轻量级锁和重量级锁两层,当线程冲突时从轻量级锁转向重量级锁.本文分别从轻量级锁和重量级锁两个层次分别进行只读锁优化.轻量级锁的只读优化算法可以减少原子操作的开销;重量级锁的只读优化算法则可以使多个线程同时在只读临界区中.最后在Java虚拟机HotSpot中实现只读锁优化,并且在龙芯3A上进行实验.性能测试用例包括单线程Java程序、多线程Java程序以及SPECjvm2008.实验结果表明,上述优化方法能极大降低线程进入和退出只读临界区的开销,提高Java虚拟机的同步性能. 相似文献