Espacios de nombres
Variantes
Acciones

Archivo de encabezado de la biblioteca estándar <shared_mutex>

De cppreference.com
< cpp‎ | header
 
 
Archivos de encabezado de la biblioteca estándar
 

Este archivo de encabezado es parte de la biblioteca de soporte de hilos.

Contenido

Clases

Proporciona un servicio de exclusión mutua compartida.
(clase) [editar]
Proporciona un servicio de exclusión mutua compartida e implementa bloqueo con un tiempo de espera.
(clase) [editar]
Implementa un envoltorio de propiedad de un mutex movible.
(plantilla de clase) [editar]

Funciones

Especialización de std::swap para shared_lock
(plantilla de función) [editar]

[editar] Sinopsis

namespace std {
  class shared_mutex;
  class shared_timed_mutex;
  template<class Mutex> class shared_lock;
  template<class Mutex>
    void swap(shared_lock<Mutex>& x, shared_lock<Mutex>& y) noexcept;
}

[editar] Clase std::shared_mutex

namespace std {
  class shared_mutex {
  public:
    shared_mutex();
    ~shared_mutex();
 
    shared_mutex(const shared_mutex&) = delete;
    shared_mutex& operator=(const shared_mutex&) = delete;
 
    // propiedad exclusiva
    void lock();                // bloquea
    bool try_lock();
    void unlock();
 
    // propiedad compartida
    void lock_shared();         // bloquea
    bool try_lock_shared();
    void unlock_shared();
 
    using native_handle_type = /* definido por la implementación */;
    native_handle_type native_handle();
  };
}

[editar] Clase std::shared_timed_mutex

namespace std {
  class shared_timed_mutex {
  public:
    shared_timed_mutex();
    ~shared_timed_mutex();
 
    shared_timed_mutex(const shared_timed_mutex&) = delete;
    shared_timed_mutex& operator=(const shared_timed_mutex&) = delete;
 
    // propiedad exclusiva
    void lock();                // bloquea
    bool try_lock();
    template<class Rep, class Period>
      bool try_lock_for(const chrono::duration<Rep, Period>& rel_time);
    template<class Clock, class Duration>
      bool try_lock_until(const chrono::time_point<Clock, Duration>& abs_time);
    void unlock();
 
    // propiedad compartida
    void lock_shared();         // bloquea
    bool try_lock_shared();
    template<class Rep, class Period>
      bool try_lock_shared_for(const chrono::duration<Rep, Period>& rel_time);
    template<class Clock, class Duration>
      bool try_lock_shared_until(const chrono::time_point<Clock, Duration>& abs_time);
    void unlock_shared();
  };
}

[editar] Clase template std::shared_lock

namespace std {
  template<class Mutex>
  class shared_lock {
  public:
    using mutex_type = Mutex;
 
    // construcción/copia/destrucción
    shared_lock() noexcept;
    explicit shared_lock(mutex_type& m);        // bloquea
    shared_lock(mutex_type& m, defer_lock_t) noexcept;
    shared_lock(mutex_type& m, try_to_lock_t);
    shared_lock(mutex_type& m, adopt_lock_t);
    template<class Clock, class Duration>
      shared_lock(mutex_type& m, const chrono::time_point<Clock, Duration>& abs_time);
    template<class Rep, class Period>
      shared_lock(mutex_type& m, const chrono::duration<Rep, Period>& rel_time);
    ~shared_lock();
 
    shared_lock(const shared_lock&) = delete;
    shared_lock& operator=(const shared_lock&) = delete;
 
    shared_lock(shared_lock&& u) noexcept;
    shared_lock& operator=(shared_lock&& u) noexcept;
 
    // bloqueo
    void lock();                                // bloquea
    bool try_lock();
    template<class Rep, class Period>
      bool try_lock_for(const chrono::duration<Rep, Period>& rel_time);
    template<class Clock, class Duration>
      bool try_lock_until(const chrono::time_point<Clock, Duration>& abs_time);
    void unlock();
 
    // modificadores
    void swap(shared_lock& u) noexcept;
    mutex_type* release() noexcept;
 
    // observadores
    bool owns_lock() const noexcept;
    explicit operator bool () const noexcept;
    mutex_type* mutex() const noexcept;
 
  private:
    mutex_type* pm;                             // solo exposición
    bool owns;                                  // solo exposición
  };
 
  template<class Mutex>
    void swap(shared_lock<Mutex>& x, shared_lock<Mutex>& y) noexcept;
}