MPMC Channel:Go channel 与 crossbeam-channel 的实现对比
同一个并发原语,Go 和 Rust 却走出了截然不同的道路:一个用全局互斥锁守护环形缓冲区,另一个用逐槽位 CAS 实现无锁推进。本文深入拆解 Go channel、crossbeam-channel、LMAX Disruptor 和 DPDK rte_ring 的内部结构,并给出一份完整的 C 语言有界 MPMC 队列实现。
发布来自土法炼钢兴趣小组的知识、笔记、进展和应用。主题包括数据结构和算法、编程语言、网络安全、密码学等。
共 1 篇文章 · 返回首页
同一个并发原语,Go 和 Rust 却走出了截然不同的道路:一个用全局互斥锁守护环形缓冲区,另一个用逐槽位 CAS 实现无锁推进。本文深入拆解 Go channel、crossbeam-channel、LMAX Disruptor 和 DPDK rte_ring 的内部结构,并给出一份完整的 C 语言有界 MPMC 队列实现。