diff options
author | Mike Buland <eichlan@xagasoft.com> | 2013-02-26 04:54:45 +0000 |
---|---|---|
committer | Mike Buland <eichlan@xagasoft.com> | 2013-02-26 04:54:45 +0000 |
commit | 772a6bef0de2dcf0b7d9d596ce86f1def4d1f03e (patch) | |
tree | a9e3be8f50309fe06c8c1d01092e6fc0d9c5b82d /src/unstable/readwritemutex.h | |
parent | f342b82c4bf125c7cb478160bf011e571c317726 (diff) | |
download | libbu++-772a6bef0de2dcf0b7d9d596ce86f1def4d1f03e.tar.gz libbu++-772a6bef0de2dcf0b7d9d596ce86f1def4d1f03e.tar.bz2 libbu++-772a6bef0de2dcf0b7d9d596ce86f1def4d1f03e.tar.xz libbu++-772a6bef0de2dcf0b7d9d596ce86f1def4d1f03e.zip |
Added auto-lock classes to the Bu::ReadWriteMutex, I think I like that type of
encapsulation, at least for the read/write guy. Also started work on a
thread-safe wrapper for the standard hash. There is a lot of functionality we
just have to leave out in this, it's just too dangerous in a thread-safe class.
Diffstat (limited to '')
-rw-r--r-- | src/unstable/readwritemutex.h | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/src/unstable/readwritemutex.h b/src/unstable/readwritemutex.h index 8641e3f..eb159ca 100644 --- a/src/unstable/readwritemutex.h +++ b/src/unstable/readwritemutex.h | |||
@@ -69,6 +69,42 @@ namespace Bu | |||
69 | */ | 69 | */ |
70 | void unlockWrite(); | 70 | void unlockWrite(); |
71 | 71 | ||
72 | class ReadLocker | ||
73 | { | ||
74 | public: | ||
75 | ReadLocker( ReadWriteMutex &m ) : | ||
76 | m( m ) | ||
77 | { | ||
78 | m.lockRead(); | ||
79 | } | ||
80 | |||
81 | ~ReadLocker() | ||
82 | { | ||
83 | m.unlockRead(); | ||
84 | } | ||
85 | |||
86 | private: | ||
87 | ReadWriteMutex &m; | ||
88 | }; | ||
89 | |||
90 | class WriteLocker | ||
91 | { | ||
92 | public: | ||
93 | WriteLocker( ReadWriteMutex &m ) : | ||
94 | m( m ) | ||
95 | { | ||
96 | m.lockWrite(); | ||
97 | } | ||
98 | |||
99 | ~WriteLocker() | ||
100 | { | ||
101 | m.unlockWrite(); | ||
102 | } | ||
103 | |||
104 | private: | ||
105 | ReadWriteMutex &m; | ||
106 | }; | ||
107 | |||
72 | private: | 108 | private: |
73 | Bu::Mutex mRead; | 109 | Bu::Mutex mRead; |
74 | int iCounter; | 110 | int iCounter; |