YEH kya govern karta hai: threads ke across alag memory locations par operations ki visible ordering. (Single-location ordering cache coherence se handle hoti hai aur har jagah assume ki jaati hai.)
HOW we reason: hum ek chota canonical test (ek litmus test) pick karte hain, enumerate karte hain ki kaunse final register/memory values possible hain, aur ek memory model simply woh outcomes hain jo yeh allow karta hai.
acquire (loads) / release (stores) — ek release-store us acquire-load ke saath synchronizes-with karta hai jo use read karta hai, release se pehle ki har cheez publish karta hai. MP sahi implement karta hai.
seq_cst (default) — saare seq_cst ops ke across ek single global total order (SC) restore karta hai. x86 par ek seq_cst store ≈ store + MFENCE; ARM par ≈ barriers.
Ek relaxed model (ARM/POWER) kaun se reorderings allow karta hai?
Charon: store/load × store/load alag addresses par (coherence + dependencies ke subject).
SB test mein, kya r10 && r20 SC ke under possible hai?
Nahi — SC se forbidden hai.
SB test mein, kya r10 && r20 TSO/x86 ke under possible hai?
Haan — dono stores store buffers mein baithe hain jabki loads stale 0s read karte hain.
SB pattern ke liye x86 par SC kaunsi instruction restore karti hai?
Store aur load ke beech MFENCE (store buffer drain karta hai).
MP test mein, kya consumer TSO ke under flag==1 lekin stale data dekh sakta hai?
Nahi — store→store aur load→load preserved hain, toh flag se pehle data publish ho jaata hai.
MP test mein, relaxed hardware stale data kyun dikha sakta hai?
store→store ya load→load reorder ho sakta hai; stores independently propagate hote hain kisi implicit ordering ke bina.
Correct MP saste mein implement karne wale C++ orders kaun se hain?
flag par release store + flag par acquire load.
Release→acquire pair kya guarantee karta hai?
Release se pehle ki har cheez matching acquire ke baad ki har cheez se happens-before hai (publication).
Recall Feynman: 12 saal ke bachche ko explain karo
Socho har worker (CPU core) notes likhta hai aur unhe ek outbox mein daalta hai. Ek note doosron ko tab tak nahi dikhta jab tak mail actually nahi jaata — chahe worker aage badh gaya ho. Sequential consistency = ek strict office jahan ek shared list har action ko ek true order mein record karti hai, toh sabko pata hai kya kab hua. TSO = office mostly agree karta hai, lekin har worker ka ek chota outbox hai, toh woh apna aagla reading kar sakta hai pehle hi aakhiri likha hua note mail hone se. Relaxed = ek chaotic office jahan letters kisi bhi order mein aate hain jab tak tum explicitly "pehle yahi bhejo!" stamp nahi karte (ek barrier). Stamp slow hai lekin order guarantee karta hai.