Mutex lock

뮤텍스 잠금

Pass a lock so only one job enters the critical section at a time.

···
html
<div class="v"><header><b>MUTEX</b><span id="state"></span></header><main><div class="gate"><div id="a"></div><div class="lock" id="lock"></div><div id="b"></div></div><div class="counter" id="counter"></div></main><footer>one owner at a time</footer></div>
css
.v{width:min(92vw,660px);height:min(86vh,310px);box-sizing:border-box;padding:clamp(9px,2.5vmin,18px);border:1px solid var(--line);border-radius:14px;background:var(--surface);display:flex;flex-direction:column;gap:7px;color:var(--fg);font:500 clamp(15px,3.2vmin,17px)/1.25 var(--font-sans, sans-serif)}.v header,.v footer{display:flex;justify-content:space-between;align-items:center;gap:8px;white-space:nowrap}.v header b{color:var(--accent);font-size:.9em}.v header span,.v footer{color:var(--muted);font-size:.82em}.v main{flex:1;min-height:0;position:relative;overflow:hidden}.v .mono{font-family:ui-monospace,SFMono-Regular,Consolas,monospace}.v .active{background:var(--accent)!important;color:var(--bg)!important;border-color:var(--accent)!important}.v .muted{opacity:.28} .gate{height:68%;display:flex;align-items:center;justify-content:space-around;gap:6px}.gate>div{padding:10px 8px;border:1px solid var(--line);border-radius:6px;text-align:center;font:600 .85em ui-monospace,monospace}.lock{border-color:var(--accent)!important}.counter{text-align:center;color:var(--accent);font:600 .9em ui-monospace,monospace}
js
let n=0;const owners=["A","A","B","B"];function draw(){document.getElementById("a").textContent=n<2?"A inside":"A done";document.getElementById("b").textContent=n<2?"B waits":"B inside";document.getElementById("lock").textContent="LOCK → "+owners[n];document.getElementById("counter").textContent="shared count: "+(n+1);document.getElementById("state").textContent="owner "+owners[n];n=(n+1)%4}draw();setInterval(draw,950)

A mutex admits only one job into code that mutates shared state. The owner releases the lock, allowing a waiting job to enter next.

An overly broad lock reduces parallelism, while a missed release blocks everyone else. Keep the critical section short and release on error paths.

When to use

Use it when multiple threads mutate the same structure.

Open as page ↗