2

J'ai lu la documentation cpp et compris queY at-il un avantage à utiliser atomic_init sur atomic_store?

Atomic_init
-is non atomique et sujettes à la race des données (il porte un problème) -De le terme « init » dans l'instruction, je crois que il doit être utilisé pour initialiser la variable pour la première fois.

Atomic_store -stores une valeur atomiquement dans la variable atomique

Alors, pourquoi utiliser ne pas stocker atomique pour initialiser la variable? Si oui, pourquoi ont-ils l'atomic_init?

Y at-il un avantage à utiliser atomic_init sur atomic_store?

Répondre

3

Généralement, vous ne devriez pas avoir besoin d'initialiser quoi que ce soit de façon atomique, car cela impliquerait que plusieurs threads sont en concurrence pour utiliser de la mémoire non initialisée.

Généralement, la mémoire est monothread pendant la construction/l'initialisation, mais ensuite, elle est "publiée" de telle sorte que d'autres threads peuvent commencer à l'utiliser.

Dans le cas de l'atomique globale, vous devriez généralement les initialiser avant que d'autres threads n'existent. Les avantages de l'utilisation de Atomic_init consisteraient à indiquer explicitement une initialisation et à contourner une petite quantité de temps système.