无锁环形缓冲区的并发控制方法、设备、存储介质及程序产品与流程

摘要: 本申请涉及云计算技术、云网络领域,尤其涉及一种无锁环形缓冲区的并发控制方法、设备、存储介质及程序产品。背景技术:1、目前,高性能服务器普遍部署于多核处理器平台,...
无锁环形缓冲区的并发控制方法、设备、存储介质及程序产品与流程

本申请涉及云计算技术、云网络领域,尤其涉及一种无锁环形缓冲区的并发控制方法、设备、存储介质及程序产品。

背景技术:

1、目前,高性能服务器普遍部署于多核处理器平台,通过高并发模式处理大量业务请求。锁机制作为保证多线程/进程间共享资源访问一致性的基础同步手段,其固有的阻塞与上下文切换开销在高并发争用下显著损害系统吞吐量,并容易引入响应延迟。

2、因此,现有技术中提出无锁环形缓冲区,通过原子操作移动两个关键指针实现数据读写,在避免锁竞争的同时兼顾缓存局部性。然而,随着处理器核心数量激增,基于单一全局原子变量进行指针移动的方案面临显著性能瓶颈。此外,多生产者多消费者场景下,多线程对共享变量的高频操作导致原子操作冲突率及缓存行失效频率增高,有效带宽与吞吐量下降明显。

技术实现思路

1、为解决上述问题,本申请实施例提供一种无锁环形缓冲区的并发控制方法、设备、存储介质及程序产品。

2、第一方面,本申请实施例提供的无锁环形缓冲区的并发控制方法,包括:

3、响应于多个生产者对所述无锁环形缓冲区的写入操作,通过原子操作竞争将写指针从第一值更新至第二值,并递增全局生产者序列号;

4、响应于多个消费者对所述无锁环形缓冲区的读取操作,读取所述全局生产者序列号和全局消费者序列号;

5、基于所述全局生产者序列号和所述全局消费者序列号判断是否对所述无锁环形缓冲区进行读取操作,当确定进行操作时,通过原子操作竞争将读指针从第三值更新至第四值,并递增所述全局消费者序列号。

6、第二方面,本申请实施例提供的电子设备,包括:处理器和存储器,该存储器用于存储计算机程序,所述处理器用于调用并运行所述存储器中存储的计算机程序,执行上述任意一种无锁环形缓冲区的并发控制方法。

7、第三方面,本申请实施例提供的计算机可读存储介质,用于存储计算机程序,所述计算机程序使得计算机执行上述任意一种无锁环形缓冲区的并发控制方法。

8、第四方面,本申请实施例提供的计算机程序产品,包括计算机程序指令,该计算机程序指令使得计算机执行如上述任意一种无锁环形缓冲区的并发控制方法。

9、本申请实施例的技术方案中,通过响应于多个生产者对无锁环形缓冲区的写入操作,通过原子操作竞争将写指针从第一值更新至第二值,并递增全局生产者序列号;响应于多个消费者对无锁环形缓冲区的读取操作,读取全局生产者序列号和全局消费者序列号;基于全局生产者序列号和全局消费者序列号判断是否对无锁环形缓冲区进行读取操作,当确定进行操作时,通过原子操作竞争将读指针从第三值更新至第四值,并递增全局消费者序列号;如此,通过在无锁环形缓冲区中同时维护全局生产者序列号和全局消费者序列号两个独立序列号,解决aba问题的同时避免全局序列号的性能瓶颈,对比传统单序列号方案可以大幅减少原子操作冲突率。

1.一种无锁环形缓冲区的并发控制方法,其特征在于,所述方法包括:

2.根据权利要求1所述的方法,其特征在于,所述无锁环形缓冲区包括多个数据槽位,每个所述数据槽位具有槽位序列号;

3.根据权利要求1所述的方法,其特征在于,所述基于所述全局生产者序列号和所述全局消费者序列号判断是否对所述无锁环形缓冲区进行读取操作,包括:

4.根据权利要求1所述的方法,其特征在于,所述原子操作竞争的结果包括竞争成功和竞争失败;

5.根据权利要求4所述的方法,其特征在于,所述无锁环形缓冲区包括第一读指针和第一写指针;所述多个生产者和所述多个消费者按非一致性内存访问numa节点进行分组,每个numa节点包括第二读指针和第二写指针;

6.根据权利要求5所述的方法,其特征在于,所述同步触发条件包括以下一种或多种:

7.根据权利要求6所述的方法,其特征在于,当重试次数达到第二预设阈值时,将所述生产者和/或所述消费者迁移到邻近numa节点。

8.一种电子设备,其特征在于,包括:处理器和存储器,该存储器用于存储计算机程序,所述处理器用于调用并运行所述存储器中存储的计算机程序,执行如权利要求1至7中任一项所述的方法。

9.一种计算机可读存储介质,其特征在于,用于存储计算机程序,所述计算机程序使得计算机执行如权利要求1至7中任一项所述的方法。

10.一种计算机程序产品,其特征在于,包括计算机程序指令,该计算机程序指令使得计算机执行如权利要求1至7中任一项所述的方法。