76 votes

la différence entre la norme atomique de bool et atomique drapeau

Je n'étais pas au courant de l' std::atomic variables, mais était au courant à propos de l' std::mutex (bizarre à droite!) fournis par la norme; cependant, une chose a attiré mon attention: il y a apparemment deux-même(pour moi) atomique types fournis par la norme, énumérés ci-dessous:

  1. std::atomic<bool> type

  2. std::atomic_flag type

Il est aussi mentionné l'exemple d' std::atomic_flag type -

std::atomic_flag est atomique de type booléen. Contrairement à toutes les spécialisations de std::atomique, elle est garantie sans verrouillage. Contrairement à std::atomique, std::atomic_flag ne fournit pas de charge ou les opérations de banque.

dont je n'arrive pas à comprendre. Est - std::atomic bool type de ne pas être sans verrouillage? Alors il n'est pas atomique ou quoi?

Alors, quelle est la différence entre les deux et quand dois-je utiliser qui?

52voto

user2079303 Points 4916

std::atomique de type bool pas garantis pour être sans verrouillage?

Correct. std::atomic peut être mis en œuvre à l'aide de verrous.

alors il n'est pas atomique ou quoi?

std::atomic est atomique si elle a été implémenté à l'aide de verrous, ou sans. std::atomic_flag est garanti pour être mis en œuvre sans l'aide de verrous.

Alors, quelle est la différence b/w deux

La principale différence en plus de la serrure sans la garantie est de:

std::atomic_flag ne fournit pas de charge ou les opérations de banque.


et quand dois-je utiliser qui?

Généralement, vous aurez envie d'utiliser std::atomic<bool> quand vous avez besoin d'un atomique variable booléenne. std::atomic_flag est un faible niveau de la structure qui peut être utilisé pour implémenter des structures atomiques.

27voto

michalsrb Points 2652

std::atomic<T> garanties qui accède à la variable sera atomique. Il n'a cependant pas dit comment est l'atomicité atteint. Il peut être utiliser sans verrouillage variable, ou à l'aide d'un verrou. La mise en œuvre effective dépend de votre architecture cible et le type d' T.

std::atomic_flag sur l'autre main est la garantie d'être mis en œuvre à l'aide d'un lock-technique libre.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X