无锁数据结构程序库的设计与实现

来源 :华中科技大学 | 被引量 : 0次 | 上传用户:myjoys
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
在计算机CPU核心数量不断增加、多用户互联网应用广泛普及的背景下,如何提高计算机程序的并发度,使之充分利用多核CPU的优势以及网络的等待时间,成为了软件开发的重要问题。数据结构是计算机程序的重要组成部分,在这种背景下,数据结构的并发安全性与并发操作的性能也成为了软件开发人员关心的重要问题。因此,为满足软件开发人员在并发程序开发中对于无锁的、并发安全的数据结构的使用需求,基于不可变数据结构和Go语言设计并实现了一个提供无锁数据结构及相关操作的程序库。首先介绍了不可变数据结构通过共享大部分内容来实现高效性能的基本设计思想、使用不可变数据结构来实现并发安全的无锁数据结构的基本方法、与实现密切相关的Go语言运行时——特别是其内存管理模块与垃圾回收模块。其次在程序库的设计过程中,分析和对比了既有的一些数据结构,选择了其中适合改造成不可变数据结构的设计,并适当地根据不可变数据结构的设计特点进行了创新和优化,设计出了对应的不可变的方案,包括不可变栈、不可变二叉搜索树和不可变哈希集合,利用它们设计了程序库中对应的无锁数据结构。然后根据设计使用Go语言实现了程序库。最后为程序库设计了功能测试和非功能测试的测试用例并进行了相关的测试,根据基准测试的结果分析了性能。通过对基准测试的分析,可以看到程序库有足够优越的性能,能很好满足软件开发人员对于无锁数据结构的应用需求。
其他文献
近年来关于机器阅读理解(Machine Reading Comprehension,MRC)的研究持续火热,机器阅读理解任务可以看做是基于文本的问答系统,给定一段上下文和问题,机器得出答案。MRC任务衡量了机器理解人类自然语言的能力,并且在实际生活中具有很高的应用价值。多步推理机器阅读理解相比传统专注单篇文章的阅读理解方法,更加强调机器的推理能力,旨在要求系统结合多篇文档的多个推理事实进行推测,进
学位
近些年来,深度学习方法在图像识别任务上具有良好表现,但其良好表现往往依赖于大量的,数量均衡的样本数据。在现实生活中,不同类别的样本数据量往往呈现出一种长尾分布,当数据集中只存在少量的训练样本,如何更好的对测试图像进行识别,于是提出了小样本学习方法。基于图神经网络的小样本图像识别模型分为表示学习和度量学习两个阶段。在表示学习阶段,通过卷积神经网络将图像映射到特征空间中,获取图像的嵌入表示,但同类样本
学位
在大数据时代,企业每天都会产生海量的日志信息,这些信息里面包含着许多与企业产品相关的重要信息,而日志文件又散落于分布式集群环境中的各个节点上,这极大的增加了日志收集的难度。因此亟需一套海量日志分析系统来解决这些问题,该系统能通过大数据技术手段对这些散落于各个服务器上的海量的日志数据进行统一管理,从而分析提炼出有价值的信息。通过调研国内外日志分析系统的研究现状,结合企业中实际使用的日志分析系统的架构
学位
随着社会的发展和人口数量的增加,我国老年人口数量在逐年增加,患有各种慢性疾病待康复的老年人逐年增多。目前我国康复医疗资源紧缺,使用的大部分运动康复设备存在设计复杂、造价昂贵、使用不便等不足,已经不能满足大多数待康复患者接受充分康复训练的需求。因此,通过开发实现用于康复训练的嵌入式助步车系统可以更好地帮助病人进行行走康复训练并能提供实时数据反馈和监护,使训练过程更加科学合理。用于康复训练的嵌入式助步
学位
Kubernetes将容器视为服务,并提供自动重启、弹性伸缩等功能,是当前部署微服务的主流平台。但kubernetes集群调度在默认实现上是一种在静态资源上进行的机制,在对电商类实际应用场景进行架构部署时,仍然存在扩缩容上的冗余计算以及节点资源利用率不足等弊端,这很容易造成集群并发性能以及高可用性上的瓶颈。针对上述挑战,在借助Kubernetes作为微服务架构的部署框架的基础上,论文对传统电商微服
学位
随着深度学习的飞速发展,神经网络模型变得越来越复杂,在单一数据集上进行模型训练往往难以满足需求,而统一收集各方用户数据上传到服务器进行集中训练则会造成隐私信息泄露。为了解决这个问题,近年来兴起的联邦学习技术可以在保护用户隐私数据的同时,实现分布式数据的联合学习,从而构建全局模型。然而,在联邦学习中由于服务器无法直接获取用户的本地训练数据对其进行检验,极易遭受来自恶意用户的攻击。基于此,首先提出了一
学位
近年来,随着微服务架构的快速兴起,软件系统的技术栈变得日益庞杂,这对软件RT、稳定性等方面性能都提出了更高的要求。压力测试已然成为新系统上线、性能瓶颈探测时不可或缺的关键步骤。随着互联网行业的快速发展和与日俱增的压测需求,传统的压测工具和功能测试方法迎来了巨大挑战,目前业界提出了一种广泛适用的压测概念,即全链路压测系统。全链路压测系统是针对现网的业务场景和需求,模拟真实的洪峰流量,对系统的整个调用
学位
随着计算机技术和互联网的发展,当今社会中软件已经成为人们生活中必不可少的一个重要部分。软件产品在设计和实现时或多或少会存在一些漏洞,这些漏洞也使软件在被使用的过程中存在着巨大的安全隐患,可能会造成严重的危害。软件产品的功能日益丰富完善的同时,代码量也在不断增多,大大增加了传统的软件测试方法检测软件中漏洞的难度。设计和实现性能更好的漏洞检测系统在软件安全领域已经是一个比较重要的课题。基于静态分析的C
学位
问答系统在自然语言处理领域已经经历了长足的发展,在实际场景中,通常针对垂直领域构建问答系统,然而问答对的数据量和知识库的完整程度一直是问答对匹配精确度的核心问题。随着知识图谱的出现和发展,因其拥有针对特定领域知识的完整性和可扩展性的特点,使得知识图谱也被更多的应用到问答系统中。由于医学方面知识库的限制,医学领域问答系统一直是比较复杂的问题。本文设计了一个基于知识图谱的医学领域问答系统,主要工作为构
学位
随着移动互联网和移动终端设备的高速发展,即时通讯软件逐渐成为人们生活中必不可少的一部分,即时通讯软件节约人们沟通成本,增添了沟通乐趣。然而,市面上的绝大部分通讯软件采取闭源设计,提高了开发人员的成本。因此制定高效的网络协议,提高通信效率,降低通信的流量成本仍然是亟待解决的问题。本文阐述的分布式即时通讯系统采用分布式架构设计,操作系统采用的是Linux Release,通信协议使用的是Protoco
学位