Here is the assembly produced:
1. movl (%eax), %eax 2. movl (%eax), %edx 3. addl $1, %edx 4. movl %edx, (%eax)
What if a thread gets descheduled between instructions 2 and 3?