The C/C++ memory model
n o n − a t o m i c ⊏ r e l a x e d ⊏ r e l e a s e / a c q u i c e ⊏ s c non-atomic \sqsubset \; \; relaxed \; \; \sqsubset \; \; release/acquice \;\; \sqsubset sc non−atomic⊏relaxed⊏release/acquice⊏sc
C11 model through examples
Synchronizes-withs relation
Catch-fire semantics
Definition
给定一个C11的执行图G,我们称两个事件a,b,是C11冲突的当
- a ≠ \ne = b
- loc(a) = loc(b)
- {typ(a),typ(b)} ∩ \cap ∩ {W,RMW} ≠ ∅ \ne \emptyset =∅
- na ∈ \in ∈ {mod(a),mod(b)}
- ⟨ a , b ⟩ ∈ h b ⟨ b , a ⟩ ∉ h b \lang a,b \rang \in hb \; \; \lang b,a \rang \notin hb ⟨a,b⟩∈hb⟨b,a⟩∈/hb
那么成G是C11-racy, 当G的事件a,b发生C11race
C11 consistency
C11下的一致性