atomic_is_lock_free
|
Défini dans l'en-tête
<stdatomic.h>
|
||
|
_Bool atomic_is_lock_free
(
const
volatile
A
*
obj
)
;
|
(depuis C11) | |
Détermine si les opérations atomiques sur tous les objets du type
A
(le type de l'objet pointé par
obj
) sont sans verrou. Dans toute exécution de programme donnée, le résultat de l'appel à
atomic_is_lock_free
est le même pour tous les pointeurs du même type.
Ceci est une
fonction générique
définie pour tous les
types d'objets atomiques
A
. L'argument est un pointeur vers un type atomique volatile pour accepter les adresses des objets atomiques non volatiles et
volatiles
(par exemple, E/S mappées en mémoire), et la sémantique volatile est préservée lors de l'application de cette opération aux objets atomiques volatiles.
Il n'est pas spécifié si le nom d'une fonction générique est une macro ou un identifiant déclaré avec liaison externe. Si une définition de macro est supprimée pour accéder à une fonction réelle (par exemple mise entre parenthèses comme ( atomic_is_lock_free ) ( ... ) ), ou si un programme définit un identifiant externe portant le nom d'une fonction générique, le comportement est indéfini.
Table des matières |
Paramètres
| obj | - | pointeur vers l'objet atomique à inspecter |
Valeur de retour
true
si les opérations sur tous les objets du type
A
sont sans verrou,
false
sinon.
Exemple
#include <stdio.h> #include <stdatomic.h> _Atomic struct A { int a[100]; } a; _Atomic struct B { int x, y; } b; int main(void) { printf("_Atomic struct A is lock free? %s\n", atomic_is_lock_free(&a) ? "true" : "false"); printf("_Atomic struct B is lock free? %s\n", atomic_is_lock_free(&b) ? "true" : "false"); }
Sortie possible :
_Atomic struct A is lock free? false _Atomic struct B is lock free? true
Rapports de défauts
Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C publiées antérieurement.
| DR | Appliqué à | Comportement publié | Comportement correct |
|---|---|---|---|
| DR 465 | C11 | cette fonction était par objet | cette fonction est par type |
Références
- Norme C17 (ISO/CEI 9899:2018) :
-
- 7.17.5.1 La fonction générique atomic_is_lock_free (p: 205)
- Norme C11 (ISO/CEI 9899:2011) :
-
- 7.17.5.1 La fonction générique atomic_is_lock_free (p: 280)
Voir aussi
|
indique que le type atomique donné est sans verrouillage
(constante de macro) |
|
|
Documentation C++
pour
atomic_is_lock_free
|
|