搜索结果
查询Tags标签: 无锁,共有 22条记录-
几种常见的MySQL/PolarDB-MySQL回收表空间方法对比
简介: 当我们频繁的删除表中的数据后,碎片就会变多,有经验的DBA就会回收表空间,回收表空间有好几种方式,我们要选择哪一种呢?背景 为什么需要回收表空间?任何一个存储或您购买的实例规格都有容量限制,并且根据存储介质不同,保存方式不同,相应地成本也会不同。在…
2022/8/6 2:22:45 人评论 次浏览 -
C++ 多线程的错误和如何避免(15)
除非绝对需要,否则使用无锁架构 复杂性中有一些东西吸引了每一位工程师。与常规同步机制(如互斥锁、条件变量、异步等)相比,无锁编程听起来非常性感。然而,与我交谈过的每一位经验丰富的 C++ 开发人员都认为,使用无锁编程作为首要手段是一种过早的优化形式,可能会在…
2022/5/31 5:19:42 人评论 次浏览 -
无锁编程-原子操作 概念记录
参考连接:Xbox 360 和 Microsof Windows 的无锁编程注意事项 - Win32 apps | Microsoft Docs 在所有新式处理器上,可以假定自然对齐的本机类型的读取和写入是原子的。 只要内存总线的宽度至少与读取或写入的类型一样宽,CPU 会在单个总线事务中读取和写入这些类型,从而…
2022/5/27 1:22:31 人评论 次浏览 -
Java并发编程之cas理论(无锁并发)
文章目录 1、共享模型之无锁2、有锁无锁模式对比3、 CAS 与 volatile3.1、cas + 重试 的原理3.2、volatile的作用3.3、为什么CAS+重试(无锁)效率高3.4、CAS 的特点 (乐观锁和悲观锁的特点) 4、原子整数 (内部通过CAS来实现-AtomicInteger)5、原子引用 (AtomicReference)5.…
2022/2/21 1:26:44 人评论 次浏览 -
双buffer实现无锁切换
大家好,我是雨乐! 在我们的工作中,多线程编程是一件太稀松平常的事。在多线程环境下操作一个变量或者一块缓存,如果不对其操作加以限制,轻则变量值或者缓存内容不符合预期,重则会产生异常,导致进程崩溃。为了解决这个问题,操作系统提供了锁、信号量以及条件变量等…
2022/1/7 6:08:31 人评论 次浏览 -
双buffer实现无锁切换
大家好,我是雨乐! 在我们的工作中,多线程编程是一件太稀松平常的事。在多线程环境下操作一个变量或者一块缓存,如果不对其操作加以限制,轻则变量值或者缓存内容不符合预期,重则会产生异常,导致进程崩溃。为了解决这个问题,操作系统提供了锁、信号量以及条件变量等…
2022/1/7 6:08:31 人评论 次浏览 -
无锁队列真的比有锁队列快吗【c++ linux后台开发】
<iframe allowfullscreen="true" data-mediaembed="bilibili" id="GhOrLC3f-1640154196526" src="https://player.bilibili.com/player.html?aid=550069273"></iframe> 无锁队列真的比有锁队列快吗【c++ linux后台开…
2021/12/23 7:13:04 人评论 次浏览 -
无锁队列真的比有锁队列快吗【c++ linux后台开发】
<iframe allowfullscreen="true" data-mediaembed="bilibili" id="GhOrLC3f-1640154196526" src="https://player.bilibili.com/player.html?aid=550069273"></iframe> 无锁队列真的比有锁队列快吗【c++ linux后台开…
2021/12/23 7:13:04 人评论 次浏览 -
29 | 无锁的原子操作:Redis如何应对并发访问?
Redis核心技术与实战 实践篇 29 | 无锁的原子操作:Redis如何应对并发访问? 为了保证并发访问的正确性,Redis 提供了两种方法,分别是加锁和原子操作。 加锁是一种常用的方法,在读取数据前,客户端需要先获得锁,否则就无法进行操作。当一个客户端获得锁后,就会一直持…
2021/12/20 19:22:08 人评论 次浏览 -
29 | 无锁的原子操作:Redis如何应对并发访问?
Redis核心技术与实战 实践篇 29 | 无锁的原子操作:Redis如何应对并发访问? 为了保证并发访问的正确性,Redis 提供了两种方法,分别是加锁和原子操作。 加锁是一种常用的方法,在读取数据前,客户端需要先获得锁,否则就无法进行操作。当一个客户端获得锁后,就会一直持…
2021/12/20 19:22:08 人评论 次浏览 -
c/c++ linux后台开发 3.2.2无锁队列
无锁队列使用场景 至少每秒十几万读写才考虑使用,否则没有意义 循环数组无锁队列实现 这个队列结构简单,有大小上限,可以适用于多写多读的情况 接口 bool enqueue(const ELEM_T &a_data); // ⼊队列 bool dequeue(ELEM_T &a_data); // 出队列 bool try_deque…
2021/12/20 7:25:55 人评论 次浏览 -
c/c++ linux后台开发 3.2.2无锁队列
无锁队列使用场景 至少每秒十几万读写才考虑使用,否则没有意义 循环数组无锁队列实现 这个队列结构简单,有大小上限,可以适用于多写多读的情况 接口 bool enqueue(const ELEM_T &a_data); // ⼊队列 bool dequeue(ELEM_T &a_data); // 出队列 bool try_deque…
2021/12/20 7:25:55 人评论 次浏览 -
高性能无锁队列 Mpsc Queue
JDK 原生并发队列 JDK 并发队列按照实现方式可以分为阻塞队列和非阻塞队列两种类型,阻塞队列是基于锁实现的,非阻塞队列是基于 CAS 操作实现的。JDK 中包含多种阻塞和非阻塞的队列实现,如下图所示。队列是一种 FIFO(先进先出)的数据结构,JDK 中定义了 java.util.Que…
2021/11/16 23:10:55 人评论 次浏览 -
高性能无锁队列 Mpsc Queue
JDK 原生并发队列 JDK 并发队列按照实现方式可以分为阻塞队列和非阻塞队列两种类型,阻塞队列是基于锁实现的,非阻塞队列是基于 CAS 操作实现的。JDK 中包含多种阻塞和非阻塞的队列实现,如下图所示。队列是一种 FIFO(先进先出)的数据结构,JDK 中定义了 java.util.Que…
2021/11/16 23:10:55 人评论 次浏览 -
[翻译转载] 风险指针: 无锁对象的安全内存回收机制
本文翻译文章 Hazard Pointers: Safe Memory Reclamation for Lock-Free Objects 风险指针: 无锁对象的安全内存回收机制 摘要: 无锁对象提供了比传统有锁对象更高的性能和可靠性. 然而, 仍缺少一种高效可移植的回收动态节点内存的方法, 阻碍了无锁对象被更广泛的在实践中…
2021/10/2 7:14:20 人评论 次浏览