Namespaces
Variants

Standard library header <shared_mutex> (C++14)

From cppreference.net
Standard library headers

Cet en-tête fait partie de la bibliothèque de support des threads .

Table des matières

Classes

fournit une fonctionnalité d'exclusion mutuelle partagée
(classe)
fournit une fonctionnalité d'exclusion mutuelle partagée et implémente le verrouillage avec un délai d'attente
(classe)
implémente un wrapper de propriété de mutex partagé déplaçable
(modèle de classe)

Fonctions

spécialise l'algorithme std::swap
(modèle de fonction)

Synopsis

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;
}

Classe 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;
    // propriété exclusive
    void lock();                // bloquant
    bool try_lock();
    void unlock();
    // propriété partagée
    void lock_shared();         // bloquant
    bool try_lock_shared();
    void unlock_shared();
    using native_handle_type = /* implementation-defined */;
    native_handle_type native_handle();
  };
}

Classe 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;
    // propriété exclusive
    void lock();                // bloquant
    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();
    // propriété partagée
    void lock_shared();         // bloquant
    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();
  };
}

Modèle de classe std::shared_lock

namespace std {
  template<class Mutex>
  class shared_lock {
  public:
    using mutex_type = Mutex;
    // construction/copie/destruction
    shared_lock() noexcept;
    explicit shared_lock(mutex_type& m);        // bloquant
    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;
    // verrouillage
    void lock();                                // bloquant
    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();
    // modificateurs
    void swap(shared_lock& u) noexcept;
    mutex_type* release() noexcept;
    // observateurs
    bool owns_lock() const noexcept;
    explicit operator bool () const noexcept;
    mutex_type* mutex() const noexcept;
  private:
    mutex_type* pm;                             // exposition uniquement
    bool owns;                                  // exposition uniquement
  };
  template<class Mutex>
    void swap(shared_lock<Mutex>& x, shared_lock<Mutex>& y) noexcept;
}