DPDK? 这个开源库主要用于高性能的数据包处理。它提供了高效的网络包操作函数和无锁队列来实现数据包的...
先定义一个队列结构体,包含了每个块的大小、数目、写入块索引、读取块索引等,为了解决“写索引”和“读索引”可能存在重合的两种情况,加入状态变量用来区分。 copy typedefuint16_tqueuesize_t;typedefstruct{volatileuint8_tstate;/*!< 控制状态 */queuesize_tend;/*!< 循环队列尾哨兵 */queuesize_thead;/*!<...
ODB: C++的开源、跨平台、跨数据库的对象关系映射(ORM)系统。 redis3m: 使用干净C++接口的hiredis封装器,支持标记和现成的模式。 RocksDB: 来自Facebook的嵌入键值的快速存储。 SimDB: 高性能、共享内存、无锁、跨平台、单文件、最小依赖的C++11键值存储。 SOCI: C++的数据库抽象层。 SQLite: 一个完全嵌入式的...
linux 内核的无锁队列 kfifo 就使用了内存屏障。这里主要说明__kfifo_put()函数和__kfifo_get()。__kfifo_put()用于向队列中写入数据,__kfifo_get()用于从队列中获取数据。 /** * __kfifo_put - puts some data into the FIFO, no locking version * @...
Michael-Scott非阻塞队列算法,即MS-queue算法,是1 9 9 6 年由Maged . M .Michael and M. L. Scott提出的,是最为经典的并发FIFO队列上的算法,目前很多对并发FIFO队列的研究都是基于这个算法来加以改进的。在共享内存的多核处理器上,这种基于Compare-and-swap(CAS)的算法在性能上要远远优于以前基于锁的算法,...
内存屏障与 volatile 是高并发编程中比较常用的两个技术,无锁队列的时候就会用到这两项技术。然而这两项技术涉及比较广的基础知识,所以比较难以理解,也比较不容易解释清楚。关于内存屏障和 volatile 网上有相当多的资料,但是总感觉还是不够系统和深入。当然由于我自身水平有限,所以也不敢保证就能把这两个概念说清楚。
有锁无锁队列性能 内存屏障Barrier 数组无锁队列设计实现 链表无锁队列设计实现 网络缓冲区设计 RingBuffer设计 定长消息包 ChainBuffer 设计 双缓冲区设计 定时器方案红黑树,时间轮,最小堆(项目) 定时器的使用场景 定时器的红黑树存储 时间轮的实现 最小堆的实现 ...
好像有人改进了一下设计, 参加文章 “Cache优化的并发无锁队列” http://www.docin.com/p-30332640.html ,这论文里面 “Fastforward for efficient...EWOULDBLOCK; 5 } 6 buffer[tail] = NULL; 7 tail =...
C/C++后台开发池式组件(线程池、内存池、请求池、连接池、无锁队列) 01:28:03 C/C++后台开发全网唯一的C++ GRPC使用讲解 01:29:57 C/C++后台开发 Redis源码阅读分析 01:39:29 2022年C++后台开发学习路线,含思维导图详细讲解 01:33:45 C/C++后台开发大厂秋招面试题精讲Redis应用以及原理 01:30:07...