source:
benchmark/mutexStmt/cppLock.hpp
@
e357efb
Last change on this file since e357efb was a5d1fe7, checked in by , 3 years ago | |
---|---|
|
|
File size: 434 bytes |
Line | |
---|---|
1 | class cpp_test_spinlock { |
2 | volatile bool lockBool = 0; |
3 | |
4 | public: |
5 | inline void lock() { |
6 | for ( ;; ) { |
7 | if ( (this->lockBool == 0) && (__atomic_test_and_set( &this->lockBool, __ATOMIC_ACQUIRE ) == 0) ) break; |
8 | } |
9 | } |
10 | |
11 | inline bool try_lock() { |
12 | return (this->lockBool == 0) && (__atomic_test_and_set( &this->lockBool, __ATOMIC_ACQUIRE ) == 0); |
13 | } |
14 | |
15 | inline void unlock() { |
16 | __atomic_clear( &this->lockBool, __ATOMIC_RELEASE ); |
17 | } |
18 | }; |
Note: See TracBrowser
for help on using the repository browser.