If `mem` is a shared memory location, do I need:

```
XCHG EAX,mem

```

or:

```
LOCK XCHG EAX,mem

```

to do the exchange atomically?

Googling this yields both yes and no answers. Does anyone know this definitively?