2014-09-09 15 views

Odpowiedz

19

Te dwa przykłady są równoważne; operator= i operator T są zdefiniowane jako odpowiadające odpowiednio wywoływaniu store i z domyślną wartością dla argumentu memory_order.

Jeśli jesteś zadowolony z tej wartości domyślnej, memory_order_seq_cst, aby każdy dostęp działał jako zapora pamięci, użyj tego, który wygląda lepiej. Jeśli chcesz określić inną wartość, musisz użyć tych funkcji, ponieważ operatorzy nie mogą zaakceptować drugiego argumentu.

+10

Warto zauważyć, że 'memory_order_seq_cst' jest najsilniejszym uporządkowaniem pamięci. Nie ma powodu, aby określać inną, inną niż poprawa wydajności w sytuacjach, w których nie potrzebujesz pełnej sekwencyjnej spójności. – Sneftel

+1

Preferuję 'load' /' store', ponieważ oznacza to, że zmienna jest atomowa, poprawia czytelność kodu! –