&gt; That&#x27;s not how TM is supposed to work; it should not be possible for one atomic block to observe an uncommitted write of another atomic block.<p>well, transactions need to be atomic w.r.t each other, but what about their relationship to non-transactional code ? it might appear that this is just an &#x27;implementation&#x27; detail, but, programs can contain unprotected references to shared variables (i.e., outside transactions) without creating malignant data races. so, both transactional and non-transactional code can refer to the same data.<p>this is where the notion of strong and weak atomicity comes from, and which is what the pseudo code was trying (probably unsuccessfully) to show.