1 template<class Lock>
 2 class Lock_guard{
 3 private:
 4     Lock lock;
 5 public:
 6     explicit Lock_guard(Lock& lock){
 7         this->lock = lock;
 8         this->lock.lock();
 9     }
10     ~Lock_guard(){
11         this->lock.unlock();
12     }
13     Lock_guard(const Lock_guard&) = delete;
14     Lock_guard& operator = (const Lock_guard&) = delete;
15 };
16 
17 class TTASLock{
18 private:
19     atomic<bool> state;
20 public:
21     void lock(){
22         while (true){
23             while (state.load()){};
24             if (!state.exchange(true, std::memory_order_relaxed))
25                 return;
26         }
27     }
28     void unlock(){
29         state.store(false);
30     }
31 };

 

相关文章:

  • 2022-02-06
  • 2021-12-24
  • 2022-01-03
  • 2021-07-19
  • 2021-08-31
  • 2022-03-08
  • 2022-12-23
猜你喜欢
  • 2021-10-07
  • 2021-12-18
  • 2022-01-10
  • 2021-11-15
  • 2022-12-23
  • 2021-08-08
相关资源
相似解决方案