forked from OSchip/llvm-project
18 lines
437 B
C++
18 lines
437 B
C++
class __attribute__((lockable)) Lock {
|
|
public:
|
|
void Acquire() __attribute__((exclusive_lock_function())) {}
|
|
void Release() __attribute__((unlock_function())) {}
|
|
};
|
|
|
|
class __attribute__((scoped_lockable)) AutoLock {
|
|
public:
|
|
AutoLock(Lock &lock) __attribute__((exclusive_lock_function(lock)))
|
|
: lock_(lock) {
|
|
lock.Acquire();
|
|
}
|
|
~AutoLock() __attribute__((unlock_function())) { lock_.Release(); }
|
|
|
|
private:
|
|
Lock &lock_;
|
|
};
|