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 'src/unstable/readwritemutex.h')
| -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; |
