CppCommon 1.0.5.0
C++ Common Library
Loading...
Searching...
No Matches
locker.h
Go to the documentation of this file.
1
9#ifndef CPPCOMMON_THREADS_LOCKER_H
10#define CPPCOMMON_THREADS_LOCKER_H
11
12namespace CppCommon {
13
15
21template <class T>
22class Locker
23{
24public:
26
29 explicit Locker(T& primitive) : _primitive(primitive) { _primitive.Lock(); }
30 Locker(const Locker&) = delete;
31 Locker(Locker&&) = delete;
32 ~Locker() { _primitive.Unlock(); }
33
34 Locker& operator=(const Locker&) = delete;
35 Locker& operator=(Locker&&) = delete;
36
37private:
38 T& _primitive;
39};
40
42
48template <class T>
50{
51public:
53
56 explicit ReadLocker(T& primitive) : _primitive(primitive) { _primitive.LockRead(); }
57 ReadLocker(const ReadLocker&) = delete;
59 ~ReadLocker() { _primitive.UnlockRead(); }
60
61 ReadLocker& operator=(const ReadLocker&) = delete;
63
64private:
65 T& _primitive;
66};
67
69
75template <class T>
77{
78public:
80
83 explicit WriteLocker(T& primitive) : _primitive(primitive) { _primitive.LockWrite(); }
84 WriteLocker(const WriteLocker&) = delete;
86 ~WriteLocker() { _primitive.UnlockWrite(); }
87
90
91private:
92 T& _primitive;
93};
94
95} // namespace CppCommon
96
97#endif // CPPCOMMON_THREADS_LOCKER_H
Locker synchronization primitive.
Definition locker.h:23
Locker(Locker &&)=delete
Locker & operator=(Locker &&)=delete
Locker(const Locker &)=delete
Locker(T &primitive)
Default class constructor.
Definition locker.h:29
Locker & operator=(const Locker &)=delete
Read locker synchronization primitive.
Definition locker.h:50
ReadLocker(const ReadLocker &)=delete
ReadLocker & operator=(const ReadLocker &)=delete
ReadLocker(T &primitive)
Default class constructor.
Definition locker.h:56
ReadLocker & operator=(ReadLocker &&)=delete
ReadLocker(ReadLocker &&)=delete
Write locker synchronization primitive.
Definition locker.h:77
WriteLocker(const WriteLocker &)=delete
WriteLocker & operator=(WriteLocker &&)=delete
WriteLocker & operator=(const WriteLocker &)=delete
WriteLocker(WriteLocker &&)=delete
WriteLocker(T &primitive)
Default class constructor.
Definition locker.h:83
C++ Common project definitions.