首页 > 代码库 > TTAS Lock C++11 实现
TTAS Lock C++11 实现
1 template<class Lock> 2 class lock_guard{ 3 public: 4 explicit lock_guard(Lock& lock){ 5 lock.lock(); 6 } 7 ~lock_guard(){ 8 lock.unlock(); 9 } 10 lock_guard(const lock_guard&) = delete; 11 lock_guard& operator = (const lock_guard&) = delete; 12 }; 13 14 class TTASLock{ 15 private: 16 atomic<bool> state; 17 public: 18 void lock(){ 19 while (true){ 20 while (state.load()){}; 21 if (!state.exchange(true, std::memory_order_relaxed)) 22 return; 23 } 24 } 25 void unlock(){ 26 state.store(false); 27 } 28 };
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。