原子組み込み関数の値として渡された式をgccがどのように扱うかは誰でも知っています。以下の関数を考えてみましょう。 gccはこの操作のアトミック性を保証しますか?余分なサイクルが2 << nr
?gccの原子演算子の式
static inline test_and_set_bit(volatile void *addr, int nr, int set) {
__sync_fetch_and_or(addr, set ? 2 << nr : 0);
}
を計算するために必要とされていても__sync_fetch_and_or()
運転が開始される前に(感謝!
最初に式が評価され、次に原子操作ですか?それは私が起こると思ったことですが、何らかの確認をすることは良いことです。ありがとう! –