xref: /llvm-project/clang/test/SemaObjCXX/thread-safety-analysis.h (revision cefafc4999305e08605b705b5611dd9b87d96f0a)
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