Da Zheng, le Sat 26 Dec 2009 16:21:55 +0800, a écrit : > Hi, > > Samuel Thibault wrote: > > (I've cleaned To: and subject a bit :) > > > > Da Zheng, le Wed 23 Dec 2009 21:23:23 +0800, a écrit : > >> Samuel Thibault wrote: > >>>> Is there anything else we should worry about? > >>> Ordering. See /usr/src/linux/Documentation/memory-barriers.txt > >> It's a long file. There are a lot to study:) > > > > Yes, it's very instructive. > After I read this introduction, I checked some atomic operations > implementation such as atomic_add_return in Linux for Aphla processors. > Before and after these operations change the variable, they put memory > barriers. So it's something like this: > smp_mb(); > operations; > smp_mb(); > > But the problem is: on SMP, a variable's value can always been changed by > another processor after the first memory barrier is called. Thus, the CPU > does an operation on the stale value. There seems to be no way that we can > guarantee that the variable has the latest value at the moment the CPU is > doing the operation on it.
Yes, that's why the operations have a loop that keeps retrying until the result is as expected. Samuel