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