2011-07-27 39 views
9

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>

Trả lời

14

Chuẩn 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.

+0

vì vậy số = số * 2; và số = số + 47; cũng là nguyên tử? – NoSenseEtAl

+7

Mọi thao tác * định nghĩa * đối với 'nguyên tử 'là nguyên tử, như' số * = 2; 'và' số + = 47; '. –

+3

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

Các vấn đề liên quan