Fig 2 — Thread Helping Protocol (read_internal)
Thread A MCAS initiator Thread B reader / helper Cell addr Atomic.t CAS(addr, Value v, Word wd) Word wd Atomic.get addr sees Word wd B calls mcas_desc(wd.parent) ↳ helps A complete its MCAS (not_self = true, status = Active) CAS(status, Active, Successful) retry → logical_value(wd) returns new_value Key invariant: any thread reading a Word descriptor must help the owner complete before returning a value — guarantees wait-freedom of reads