6.1.8 · D1 · HinglishParallelism & Multicore

FoundationsSynchronization primitives (locks, barriers)

2,337 words11 min read↑ Read in English

6.1.8 · D1 · Hardware › Parallelism & Multicore › Synchronization primitives (locks, barriers)

Parent note Synchronization primitives padhne se pehle, tumhe har woh term khud se samajhni chahiye jo woh bina warning ke use karta hai. Neeche, har idea ko zero se build kiya gaya hai, picture ki tarah draw kiya gaya hai, aur justify kiya gaya hai. Upar se neeche padho — koi bhi term jo neeche define ho, uska use pehle nahin hota.


1. Thread — woh "worker" jo tumhara code chalata hai

Picture: ek worker jo ek steps ki list mein apni ungli trace kar raha hai. Jab do workers hain, to do ungliyaan do (possibly identical) lists mein ek saath chalti hain.

Figure — Synchronization primitives (locks, barriers)

Topic ko yeh kyun chahiye: agar kabhi sirf ek thread hota, toh koi race nahin hoti, koi lock nahin hota, koi barrier nahin hota — synchronize karne ke liye kuch bhi nahin hota. Yeh poora chapter exist karta hai kyunki do ya zyada threads kuch share karte hain. Dekhein Thread scheduling ke liye ki kaun decide karta hai ki kaunsa worker kab chale.


2. Shared memory & shared variable — woh kaagaz jis par dono workers likhte hain

Picture: ek akela box jis par counter likha hai, ek table par rakha hai, jisme dono workers ke arrows point karte hain. Bilkul ek hi box hai, har worker ke liye alag nahin.

Topic ko yeh kyun chahiye: khatraa tabhi hota hai jab box shared ho. Agar har worker ka apna private box hota, toh edits kabhi clash nahin karte. "Shared" woh precondition hai jis par aage ka sab kuch depend karta hai.


3. Concurrent, interleave, aur timeline

Picture: do horizontal timelines, ek thread ke liye ek, chote step-blocks ke saath. Ek timeline ko left ya right slide karo aur blocks ek alag combined order mein aa jaate hain. Har legal slide program ka ek possible run hai.

Figure — Synchronization primitives (locks, barriers)

Topic ko yeh kyun chahiye: parent ka "lost update" ek specific bura interleaving hai. Tum yeh nahin samajh sakte kyun lock zaroori hai jab tak tum timeline ko slide hote nahin dekh sakte.


4. LOAD / ADD / STORE — C ki ek line asal mein teen machine steps hain

Picture: worker box ka number apni private sticky note par photocopy karta hai (LOAD), sticky note par +1 likhta hai (ADD), phir wapas jaata hai aur box ko overwrite karta hai (STORE). Jab tak woh sticky note pakde hai, shared box stale hai — jo bhi ab LOAD karega woh purani value padhega.

Topic ko yeh kyun chahiye: LOAD aur STORE ke beech ki gap exactly woh jagah hai jahan ek doosra worker ghus sakta hai aur ek aisi value padh sakta hai jo galat hone wali hai. Yeh teen-step split hi race ka mechanism hai.


5. Atomic — woh step jo divide nahin ho sakta

Picture: do boxes contrast karo. Left wala "non-atomic" LOAD-ADD-STORE ke beech ek dashed danger-zone hai jahan ek intruder arrow andar aa sakta hai. Right wala "atomic" operation ek solid sealed block hai — intruder arrow bounce ho jaata hai.

Figure — Synchronization primitives (locks, barriers)

Topic ko yeh kyun chahiye: broken flag lock fail karta hai kyunki check-then-set atomic nahin hai. Fix (TestAndSet, CompareAndSwap) ek hardware atomic operation hai. Atomicity hi woh cheez hai jo un instructions ko trustworthy banati hai. Deep dive: Atomic operations.


6. Critical section & mutual exclusion

Picture: ek chhoti si kamra ek single doorway ke saath. Kamra critical section hai; rule "kamre mein sirf ek insaan" mutual exclusion hai. Lock darwaza hai.

Topic ko yeh kyun chahiye: ek lock ka poora kaam critical section ke around mutual exclusion enforce karna hai. Yeh do words woh goal hain jiske against har lock design ko measure kiya jaata hai.


7. Lock lifecycle: acquire, release, block, spin

Picture: single doorway ke bahar ek queue. Ek spinning waiter har microsecond handle hila raha hai (busy, hot). Ek blocking waiter bench par baitha hai aur apni baari aane par shoulder tap karne ko keh raha hai (idle, cool).

Topic ko yeh kyun chahiye: parent spin locks vs. blocking locks ko contrast karta hai. Unka trade-off (CPU waste vs. wake-up delay) tabhi samajh aata hai jab "spin" aur "block" concrete pictures hon.


8. Condition variable, wait, broadcast

Picture: ek bell ke neeche benches par so rahe log. broadcast use bajata hai; sab uthte hain, diwar par ek sign dekhte hain, aur ya toh andar chale jaate hain ya wapas baith jaate hain.

Topic ko yeh kyun chahiye: sahi barrier ek lock plus ek condition variable se banta hai. wait/broadcast ke bina tum threads ko group mein soone aur jagane nahin de sakte.


9. Counting symbols: , count, threshold, generation

Picture: ek turnstile ek mechanical tally ke saath. Har arrival tally ko ek se click up karta hai; jab tally tak pahunch jaata hai toh gate khul jaata hai, par reset hota hai, aur ek chhota "round" dial ek se aage badh jaata hai.

Figure — Synchronization primitives (locks, barriers)

Topic ko yeh kyun chahiye: parent ka barrier code exactly in chaar values ko manipulate karta hai. generation reuse race ka star fix hai — tum woh argument follow nahin kar sakte jab tak yeh nahin pata ki har symbol kya count karta hai.


10. Cache coherence & memory ordering (har cheez ki neenv)

Picture: kai cores ek shared box ki chhoti private photocopies lekar baithe hain, ek invisible referee (coherence protocol) ke saath jo yeh ensure karta hai ki jab ek core write kare, toh baaki sabki photocopy ya toh update ho jaaye ya faad di jaaye.

Topic ko yeh kyun chahiye: TestAndSet "atomic" hai sirf isliye kyunki coherence doosre core ko us line ko mid-operation touch karne se rokta hai. Locks in guarantees ke upar bane hain.


Foundations kaisi topic ko feed karti hain

Thread

Concurrent interleaving

Shared variable

Race condition lost update

Load modify store

Atomic operation

Test and Set and CAS

Cache coherence

Critical section and mutual exclusion

Locks

Spin vs block

Condition variable wait broadcast

Barriers

Count threshold generation

Synchronization primitives

Related destinations jab tumhare paas foundations ho jaayein: Deadlock and livelock, Parallel algorithms.


Equipment checklist

Right side cover karo aur zyaan se jawab do. Agar koi bhi jawab fuzzy ho, parent note se pehle woh section dobara padho.

Thread kya hai, ek simple sentence mein?
Instructions ka ek stream jo CPU chalata hai — ek akela worker jo to-do list follow karta hai.
Ek variable "shared" kya banata hai?
Ek se zyada threads use read/write kar sakte hain kyunki woh ek memory address par rehta hai jo sab reach kar sakte hain.
"Interleave" ka matlab kya hai?
Concurrent threads ke steps kisi bhi order mein mix ho jaate hain jo hardware choose kare.
counter = counter + 1 dangerous kyun hai?
Yeh asal mein LOAD, ADD, STORE hai — ek doosra thread steps ke beech ghus sakta hai aur stale value padh sakta hai.
"Atomic" ko apne words mein define karo.
Ek operation jo ek saath hota hai aur half-done observe ya interrupt nahin kiya ja sakta.
Critical section kya hai, aur mutual exclusion kya hai?
Woh code jo shared data touch karta hai; yeh guarantee ki ek waqt mein zyada se zyada ek thread use run kare.
Wait karte waqt spin aur block mein kya fark hai?
Spin = CPU burn karte hue jaagte rehna aur dobara check karte rehna; block = so jaana aur jaagaya jaana, koi CPU use nahin hoti.
Condition variable ek thread ko kya karne deta hai?
wait se so jaana aur baad mein doosre thread ke broadcast/signal se jagaya jaana, phir apni condition dobara check karna.
Barrier kab khulta hai?
Jab count tak pahunch jaata hai (saare threads aa chuke hain).
Barrier ko generation counter kyun chahiye?
Ek round ko doosre se distinguish karne ke liye taaki ek fast thread pichle round ke slow thread ke saath tangle na ho.
Cache coherence kya guarantee karta hai, aur atomics ko iski zaroorat kyun hai?
Saare cores har address ki value par agree karte hain; iske bina ek core par atomic instruction doosron dwara respect nahin kiya jaata.