17 #ifndef MIR_SYNCHRONISED_H_
18 #define MIR_SYNCHRONISED_H_
39 : value{std::move(initial_value)}
94 template<
typename Cv,
typename Predicate>
95 void wait(Cv& cv, Predicate stop_waiting)
97 cv.wait(lock, stop_waiting);
102 LockedImpl(std::unique_lock<std::mutex>&& lock, U& value)
104 lock{std::move(lock)}
109 std::unique_lock<std::mutex> lock;
130 return LockedImpl<T>{std::unique_lock{mutex}, value};
151 auto lock()
const -> LockedView
153 return LockedImpl<T
const>{std::unique_lock{mutex}, value};
156 std::mutex
mutable mutex;