Namespaces
Variants

Standard library header <rcu> (C++26)

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

permet à un objet d'être protégé par RCU
(modèle de classe)
(C++26)
fournit des régions de protection RCU
(classe)

Fonctions

retourne une référence à un objet de durée statique de type std::rcu_domain
(fonction)
bloque jusqu'à ce qu'une région de protection se déverrouille sur un domaine RCU
(fonction)
peut évaluer les opérations planifiées sur un domaine RCU et bloque jusqu'à ce que toutes les évaluations précédentes soient terminées
(fonction)
(C++26)
planifie l'évaluation d'une fonction spécifiée sur un domaine RCU, allouant potentiellement de la mémoire et invoquant les évaluations planifiées
(modèle de fonction)

Synopsis

namespace std {
  template<class T, class D = default_delete<T>> class rcu_obj_base;
  class rcu_domain;
  rcu_domain& rcu_default_domain() noexcept;
  void rcu_synchronize(rcu_domain& dom = rcu_default_domain()) noexcept;
  void rcu_barrier(rcu_domain& dom = rcu_default_domain()) noexcept;
  template<class T, class D = default_delete<T>>
    void rcu_retire(T* p, D d = D(), rcu_domain& dom = rcu_default_domain());
}
**Note:** Le code C++ n'a pas été traduit conformément aux instructions, car il se trouve dans des balises `
` et contient des termes spécifiques au C++ qui doivent être préservés. Seul le texte environnant aurait été traduit s'il y en avait eu.

Modèle de classe std::rcu_obj_base

namespace std {
  template<class T, class D = default_delete<T>>
  class rcu_obj_base {
  public:
    void retire(D d = D(), rcu_domain& dom = rcu_default_domain()) noexcept;
  protected:
    rcu_obj_base() = default;
    rcu_obj_base(const rcu_obj_base&) = default;
    rcu_obj_base(rcu_obj_base&&) = default;
    rcu_obj_base& operator=(const rcu_obj_base&) = default;
    rcu_obj_base& operator=(rcu_obj_base&&) = default;
    ~rcu_obj_base() = default;
  private:
    D deleter;            // exposition uniquement
  };
}

Classe std::rcu_domain

namespace std {
  class rcu_domain {
  public:
    rcu_domain(const rcu_domain&) = delete;
    rcu_domain& operator=(const rcu_domain&) = delete;
    void lock() noexcept;
    bool try_lock() noexcept;
    void unlock() noexcept;
  };
}
**Note:** Le code C++ n'a pas été traduit car il se trouve dans des balises `
` et contient des termes spécifiques au C++ qui doivent être préservés selon les instructions. Le contenu du code reste donc en anglais comme demandé.