Pol
Revision:cb584c9
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
spinlock.h
Go to the documentation of this file.
1
#ifndef CLIB_SPINLOCK_H
2
#define CLIB_SPINLOCK_H
3
4
#include <atomic>
5
#include <mutex>
6
7
namespace
Pol
8
{
9
namespace
Clib
10
{
17
class
SpinLock
18
{
19
friend
class
std::lock_guard<
SpinLock
>;
20
21
public
:
22
SpinLock
();
23
~SpinLock
();
24
25
private
:
26
void
lock
();
27
void
unlock
();
28
29
std::atomic_flag
_lck
;
30
};
31
33
typedef
std::lock_guard<SpinLock>
SpinLockGuard
;
34
35
inline
SpinLock::SpinLock
()
36
{
37
_lck
.clear();
38
}
39
inline
SpinLock::~SpinLock
() {}
40
44
inline
void
SpinLock::lock
()
45
{
46
while
(
_lck
.test_and_set( std::memory_order_acquire ) )
47
{
48
}
49
}
50
54
inline
void
SpinLock::unlock
()
55
{
56
_lck
.clear( std::memory_order_release );
57
}
58
59
}
// namespace Clib
60
}
// namespace Pol
61
#endif
Pol::Clib::SpinLock::~SpinLock
~SpinLock()
Definition:
spinlock.h:39
Pol::Clib::SpinLock::_lck
std::atomic_flag _lck
Definition:
spinlock.h:29
Pol::Clib::SpinLock::SpinLock
SpinLock()
Definition:
spinlock.h:35
Pol::Clib::SpinLock::lock
void lock()
Definition:
spinlock.h:44
Pol::Clib::SpinLock::unlock
void unlock()
Definition:
spinlock.h:54
Pol::Clib::SpinLock
Definition:
spinlock.h:17
Pol::Clib::SpinLockGuard
std::lock_guard< SpinLock > SpinLockGuard
Definition:
spinlock.h:33
Pol
Definition:
berror.cpp:12
clib
spinlock.h
Generated on Wed Oct 10 2018 02:41:50 for Pol by
1.8.11