2011-07-27 4 views
9

Bir kanal 9 E2E videosuna (içinde Herb Sutter ile) C++ 0x olarak atomic<int> atomiktir. Birisi, nihai C++ 11 standardında nasıl olduğunu teyit edebilir (nihai hale getirildiğini iddia etsin :)).Std :: atomic için ++ atomik <int>

cevap

14

standardı, standardının sonlandırılmış halidir ve atomic<T>'un tüm standart integral uzmanlıklarındaki her işlem atomiktir.

Bu, standart integralle ilgili atomic<T>'un atomik olduğu ifadeleri ifadeleri anlamına gelmez.

number = number * 2; 

iki operasyon geçerli:

temporary = number * 2; 
number = temporary; 

Her biri atomik olmakla birlikte değiller. İşlemler/kritik bölümler ne içindir.

+0

çok sayıda = sayı * 2 dir; ve sayı = sayı + 47; ayrıca atomik mi? – NoSenseEtAl

+7

* * için tanımlanan her işlem ' atom '* = 2 sayısı' gibi atomik olduğu; ve 'sayısı + = 47;'. –

+3

numara = sayı * 2 * iki * işlemdir. * Bunların her biri atomiktir, ama birlikte değildirler. "İşlemler" ne içindir. – spraff