C17 標準指定了原子操作串列。例如,對原子型別物件的原子讀寫修改操作在A標準中定義為:
C atomic_fetch_add(volatile A *object, M operand);
但是我們可以呼叫atomic_fetch_add非原子型別:
static int x;
static int foo(void *arg) {
atomic_fetch_add(&x, 3);
}
atomic_fetch_add我的問題:對非原子物件的上述操作是否x保證是原子的?
uj5u.com熱心網友回復:
A 型別的原子物件在標準中定義
但是我們可以呼叫
對非原子物件 x 的上述 atomic_fetch_add 操作是否保證是原子的?
不。在標準中,您提供的代碼的行為沒有定義,沒有任何形式的保證。
現實生活中的例子,在鏗鏘聲中你會得到一個錯誤。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/448875.html
