Bibliothèque C ++ - <atomique>

introduction

C'est un objet de types atomiques contenant une valeur d'un type particulier (T) et la principale caractéristique des objets atomiques est que l'accès à cette valeur contenue à partir de différents threads ne peut pas provoquer des courses de données (c'est-à-dire que faire cela est un comportement bien défini, avec accède correctement séquencé). Généralement, pour tous les autres objets, la possibilité de provoquer une course aux données pour accéder simultanément au même objet qualifie l'opération comme un comportement indéfini.

Déclaration

Voici la déclaration de std :: atomic.

template <class T> struct atomic;

Paramètres

T - C'est un type de la valeur contenue.

Fonctions des membres

N ° Sr. Fonctions des membres et définition
1 (constructeur)

C'est une construction d'un objet atomique

2 opérateur =

Il stocke une valeur dans un objet atomique

3 is_lock_free

Il vérifie si l'objet atomique est sans verrouillage

4 boutique

Il remplace atomiquement la valeur de l'objet atomique par un argument non atomique

5 charge

Il obtient atomiquement la valeur de l'objet atomique

6 opérateur T

Il charge une valeur à partir d'un objet atomique

sept échange

Il remplace atomiquement la valeur de l'objet atomique et obtient la valeur détenue précédemment

8 compare_exchange_weak et compare_exchange_strong

Il compare atomiquement la valeur de l'objet atomique avec un argument non atomique et effectue un échange atomique si la charge est égale ou atomique sinon

Opérations appuyées par certaines spécialisations

N ° Sr. Opérations et définition
1 fetch_add

Il ajoute atomiquement l'argument à la valeur stockée dans l'objet atomique et obtient la valeur détenue précédemment

2 fetch_sub

Il soustrait atomiquement l'argument de la valeur stockée dans l'objet atomique et obtient la valeur détenue précédemment

3 chercher_et

Il effectue atomiquement ET au niveau du bit entre l'argument et la valeur de l'objet atomique et obtient la valeur détenue précédemment

4 fetch_or

Il effectue atomiquement un OU au niveau du bit entre l'argument et la valeur de l'objet atomique et obtient la valeur détenue précédemment

5 fetch_xor

Il compare atomiquement la valeur de l'objet atomique avec un argument non atomique et effectue un échange atomique si la charge est égale ou atomique sinon

6 opérateur ++

Il incrémente la valeur atomique de un

sept opérateur--

Il décrémente la valeur atomique de un