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