Theo một kênh 9 E2E video (với Herb Sutter trong đó) trong C++ 0x nếu số là atomic<int>
number++
là nguyên tử. Ai đó có thể xác nhận rằng nó là như thế nào trong tiêu chuẩn C++ 11 cuối cùng (cho phép giả vờ rằng nó được hoàn thành :)).++ nguyên tử cho std :: nguyên tử <int>
9
A
Trả lời
14
Chuẩn là hoàn tất và mọi thao tác trên tất cả các chuyên môn tách rời chuẩn của atomic<T>
là nguyên tử.
Điều này không có nghĩa là tất cả các biểu thức liên quan đến tích phân tiêu chuẩn atomic<T>
là nguyên tử.
number = number * 2;
là hai hoạt động:
temporary = number * 2;
number = temporary;
Mỗi trong số họ là nguyên tử, nhưng họ cùng nhau thì không. Đây là những gì giao dịch/phần quan trọng được cho.
7
Có. atomic<int> operator++
sử dụng atomic<int>::fetch_add
là một hoạt động nguyên tử.
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3242.pdf p. 1127
vì vậy số = số * 2; và số = số + 47; cũng là nguyên tử? – NoSenseEtAl
Mọi thao tác * định nghĩa * đối với 'nguyên tử 'là nguyên tử, như' số * = 2; 'và' số + = 47; '. –
số = số * 2 là * hai * hoạt động. * Mỗi * trong số chúng là nguyên tử, nhưng chúng lại không giống nhau. Đây là những gì "giao dịch" được cho. – spraff