Pourquoi utiliser memory_order_seq_cst pour définir l'indicateur d'arrêt si je suis vérifié avec memory_order_relaxed?
Dans sa présentation "atomic armes", Herb Sutter présente un usage variable atomique, incluant une scénario " impliquant:
Le thread principal définit finalement Stop sur true using memory_order_seq_cst.
while (!stop.load(std::memory_order_relaxed)) { // Perform tasks }sutter affirme que l'utilisation de Memory_Order_Relaxed pour vérifier le drapeau est acceptable en raison de l'impact minimal sur le retard d'arrêt du thread. Cependant, la raison de l'utilisation de Memory_Order_Seq_Cst pour définir l'indicateur d'arrêt reste incertaine. d'observer les changements dans les drapeaux stop ou keep_running est crucial.
latence et l'implémentation inter-thread:
la latence inter-thread est principalement déterminée par l'implémentation. Les implémentations réelles C levier de levier de cohérence du cache matériel, résultant généralement en faible latence (dizaines de nanosecondes) pour la visibilité du magasin.
ni seq_cst ni les commandes de mémoire détendue accélérer la visibilité du magasin; Ils contrôlent simplement le comportement des opérations suivantes par rapport au magasin ou à la charge. Les commandes plus fortes n'accélèrent pas les événements mais ne retardent pas les autres opérations tant que l'ordre spécifié n'est pas maintenu.Visibilité et cohérence du cache matériel:
sur le matériel réel avec cohérence du cache, les commandes de mémoire n'améliorent pas le moment de visibilité du magasin; Ils gèrent uniquement la capacité des opérations suivantes à devenir visibles mondialement avant l'engagement du magasin. False.
Évitement de l'exécution d'instructions inutile, en particulier sur les ISA où les charges acquire ou seq_cst nécessitent des instructions supplémentaires (par exemple, armv7 dmb ish).
Conclusion:
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3