1 | class __attribute__((lockable)) Lock { |
---|---|
2 | public: |
3 | void Acquire() __attribute__((exclusive_lock_function())) {} |
4 | void Release() __attribute__((unlock_function())) {} |
5 | }; |
6 | |
7 | class __attribute__((scoped_lockable)) AutoLock { |
8 | public: |
9 | AutoLock(Lock &lock) __attribute__((exclusive_lock_function(lock))) |
10 | : lock_(lock) { |
11 | lock.Acquire(); |
12 | } |
13 | ~AutoLock() __attribute__((unlock_function())) { lock_.Release(); } |
14 | |
15 | private: |
16 | Lock &lock_; |
17 | }; |
18 |