参考:
https://www.cnblogs.com/ittinybird/p/4830834.html
https://blog.youkuaiyun.com/sharemyfree/article/details/47338001
https://blog.youkuaiyun.com/qccz123456/article/details/81329261
自旋锁是一种非阻塞锁,也就是说,如果某线程需要获取自旋锁,但该锁已经被其他线程占用时,该线程不会被挂起,而是在不断的消耗CPU的时间,不停的试图获取自旋锁。在多处理器环境中对持有锁时间较短的程序来说使用自旋锁代替一般的互斥锁往往能提高程序的性能(也分情况 ,有的不行)。
#include <iostream>
#include <thread>
#include <atomic>
//std::atomic<int> sum = 0;//原子操作的线程共享数据 避免用锁也可实现互斥
class MyLock
{
private:
std::atomic_flag lk = ATOMIC_FLAG_INIT;;//初始化
public:
MyLock() {};
void lock();
void unlock();
};
void MyLock::lock() //锁住(适合持有