brintos

brintos / llvm-project-archived public Read only

0
0
Text · 437 B · f657b7e Raw
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