if the following two instructions
are executed in a single thread on a single processor,
the processor cares for the atomicity of 'inc', so it is
guaranteed, that after the two instructions the value at
[eax] has been incremented by two, although internally
each inc-instruction is broken down into multiple
micro-ops and is executed in multiple pipeline stages.
The same holds, if the 'inc's are executed in separated
threads on a single processor (the processor guarantees
atomicity of inc).
If the 'inc's are executed on separated _physical_
processor, I need to prefix the 'inc' with the 'lock'
lock inc [eax]
to guarantee the desired behaviour (because shared memory
But what if the 'inc's are executed on separated _logical_
processors on the same physical processor(hyperthreading)?
Is the lock prefix necessary here?
Hyperthreading and 'lock' prefix