#include <atomic>
#include <thread>
#include <iostream>
using namespace std;
#define THREAD_NUM 32 // 测试用的线程数
template<typename T>
class LockFreeStack {
public:
LockFreeStack() {
head_ = nullptr;
}
void Push(const T& value) {
Node* newNode = new Node(value);
// 将新节点的 next 指针指向 head_
newNode
C++11 atomic_exchange 实现无锁链表
于 2022-11-28 20:13:45 首次发布
本文介绍了一个使用C++模板实现的无锁栈(Lock-Free Stack),通过原子操作保证线程安全,展示了在多线程环境下如何使用`atomic`和`compare_exchange_weak`进行push和pop操作。测试部分使用了固定数量的线程并发地进行push和pop操作,观察结果并打印获取的元素数量。

最低0.47元/天 解锁文章
304

被折叠的 条评论
为什么被折叠?



