Files
nearby/cpp/platform/synchronized.h
T
Alexey Polyudov 204f76077d nearby: snapshot as of cl/296436629
Signed-off-by: Alexey Polyudov <apolyudov@google.com>
Change-Id: I2cf5bf225b76f4c1541954651f3a7544a14e0cec
2020-04-04 12:52:31 -07:00

27 lines
649 B
C++

#ifndef PLATFORM_SYNCHRONIZED_H_
#define PLATFORM_SYNCHRONIZED_H_
#include "platform/api/lock.h"
#include "platform/ptr.h"
namespace location {
namespace nearby {
// An RAII mechanism to acquire a Lock over a block of code.
//
// https://docs.oracle.com/javase/tutorial/essential/concurrency/syncmeth.html
// https://docs.oracle.com/javase/tutorial/essential/concurrency/locksync.html
class Synchronized {
public:
explicit Synchronized(Ptr<Lock> lock) : lock_(lock) { lock_->lock(); }
~Synchronized() { lock_->unlock(); }
private:
Ptr<Lock> lock_;
};
} // namespace nearby
} // namespace location
#endif // PLATFORM_SYNCHRONIZED_H_