手写一个无锁 SPSC 队列:实现、证明与踩坑记录
从实时控制线程的通信需求出发,逐行实现单生产者单消费者环形队列,给出 acquire/release 内存序选择的正确性论证、缓存索引优化与验证方法。
编程, 并发编程
分类
6篇文章
从实时控制线程的通信需求出发,逐行实现单生产者单消费者环形队列,给出 acquire/release 内存序选择的正确性论证、缓存索引优化与验证方法。
C++ 并发编程学习笔记:数据竞争的准确定义、std::atomic 的用法,以及六种内存序背后的 happens-before 关系与典型使用模式。
C++ 并发编程学习笔记:线程的启动、汇合、分离与所有权转移。
默认、初始化、拷贝、移动、委托与转换构造函数各自的用途,以及拷贝构造/赋值运算符中深拷贝与浅拷贝的区别。
静态多态(函数重载与模板)与动态多态(虚函数、动态绑定、vtable/vptr)的区别,以及虚函数调用在编译期与运行期的完整过程。
C 风格强制转换的坑,以及 C++ 四种具名转换 static_cast、dynamic_cast、const_cast、reinterpret_cast 的适用场景与区别。