Clang Project

clang_source_code/test/SemaObjCXX/thread-safety-analysis.h
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