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_; | |
}; |