33 Thread support library [thread]
shared_lock() noexcept;
Effects: Создает объект типа shared_lock.
Postconditions: pm == nullptr и owns == false.
explicit shared_lock(mutex_type& m);
Requires: Вызывающий поток не владеет мьютексом ни в каком режиме владения.
Effects: Создает объект типа shared_lock и вызывает m.lock_shared().
Postconditions: pm == addressof(m) и owns == true.
shared_lock(mutex_type& m, defer_lock_t) noexcept;
Effects: Создает объект типа shared_lock.
Postconditions: pm == addressof(m) и owns == false.
shared_lock(mutex_type& m, try_to_lock_t);
Requires: Вызывающий поток не владеет мьютексом ни в каком режиме владения.
Effects: Создает объект типа shared_lock и вызывает m.try_lock_shared().
Postconditions: pm == addressof(m) и owns == res
где res значение, возвращаемое вызовом m.try_lock_shared().
shared_lock(mutex_type& m, adopt_lock_t);
Requires: Вызывающий поток имеет совместное владение мьютексом.
Effects: Создает объект типа shared_lock.
Postconditions: pm == addressof(m) и owns == true.
template <class Clock, class Duration>
shared_lock(mutex_type& m,
const chrono::time_point<Clock, Duration>& abs_time);
Requires: Вызывающий поток не владеет мьютексом ни в каком режиме владения.
Effects: Создает объект типа shared_lock и вызывает
m.try_lock_shared_until(abs_time).
Postconditions: pm == addressof(m) и owns == res
где res
значение, возвращаемое вызовом m.try_lock_shared_until(abs_time).
template <class Rep, class Period>
shared_lock(mutex_type& m,
const chrono::duration<Rep, Period>& rel_time);
Requires: Вызывающий поток не владеет мьютексом ни в каком режиме владения.
Effects: Создает объект типа shared_lock и вызывает
m.try_lock_shared_for(rel_time).
Postconditions: pm == addressof(m) и owns == res
где res значение, возвращаемое вызовом m.try_lock_shared_for(rel_time).
~shared_lock();
Effects: Если owns звонит pm->unlock_shared().
shared_lock(shared_lock&& sl) noexcept;
Postconditions: pm == sl_p.pm и owns == sl_p.owns (где
sl_p - состояние sl непосредственно перед этой конструкцией),
sl.pm == nullptr и sl.owns == false.
shared_lock& operator=(shared_lock&& sl) noexcept;
Effects: Если owns звонит pm->unlock_shared().
Postconditions: pm == sl_p.pm и owns == sl_p.owns (где
sl_p - состояние sl непосредственно перед этим назначением),
sl.pm == nullptr и sl.owns == false.