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>
9
A
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.
7
Evet. atomic<int> operator++
, bir atomik işlem olan atomic<int>::fetch_add
kullanır.
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3242.pdf s. 1127
çok sayıda = sayı * 2 dir; ve sayı = sayı + 47; ayrıca atomik mi? – NoSenseEtAl
* * için tanımlanan her işlem ' atom '* = 2 sayısı' gibi atomik olduğu; ve 'sayısı + = 47;'. –
numara = sayı * 2 * iki * işlemdir. * Bunların her biri atomiktir, ama birlikte değildirler. "İşlemler" ne içindir. – spraff