Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- template<class T>
- class ThreadSafeObject
- {
- public:
- class WithLock
- {
- public:
- WithLock(ThreadSafeObject<T> *tsobj)
- : tsobj_(tsobj)
- {
- tsobj_->mx_.lock();
- }
- ~WithLock()
- {
- tsobj_->mx_.unlock();
- }
- T* operator*() { return &tsobj_->obj_; }
- T* operator->() { return &tsobj_->obj; }
- private:
- ThreadSafeObject<T> *tsobj_;
- }
- WithLock withLock()
- {
- return WithLock(this);
- }
- T* operator*() { return &obj_; }
- T* operator->() { return &obj_; }
- private:
- T obj_;
- std::mutex mx_;
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement