| class __attribute__((lockable)) Lock { | |
| public: | |
| void Acquire() __attribute__((exclusive_lock_function())) {} | |
| void Release() __attribute__((unlock_function())) {} | |
| }; | |
| class __attribute__((scoped_lockable)) AutoLock { | |
| public: | |
| AutoLock(Lock &lock) __attribute__((exclusive_lock_function(lock))) | |
| : lock_(lock) { | |
| lock.Acquire(); | |
| } | |
| ~AutoLock() __attribute__((unlock_function())) { lock_.Release(); } | |
| private: | |
| Lock &lock_; | |
| }; |