diff options
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; |
