Even x = x + 1 is three machine steps, so two processes updating x together can lose an update. The critical section is the code that touches shared data, and the problem is letting only one process in at a time. Reach for it whenever two threads read and write the same variable, counter or file. A fix that only gives mutual exclusion is not enough; it must also give progress and bounded waiting.