无锁栈的几种实现方式有哪些?
摘要:以下几种方式 ● stack1 使用了最简单的 threads_in_pop 记录当前 pop 的线程数,控制并发访问安全 ● stack2 使用了风险指针,对指涉指针进行保护 ● stack3 使用 c+
以下几种方式
● stack1 使用了最简单的 threads_in_pop 记录当前 pop 的线程数,控制并发访问安全
● stack2 使用了风险指针,对指涉指针进行保护
● stack3 使用 c++20的原子智能指针,减少了对内存的管理,十分简洁
● stack4 使用了两层内外指针,分别标志使用数和完成数,解决了 ABA 问题。
