InterlockedExchange

From
Crusader Mike (2:450/159.24)
To
All
Date
2002-07-29T18:00:39Z
Area
SU.WINDOWS.NT.PROG
                              Hi,  All!

  Только ногами не бейте, т.к. не совсем топик:
почему ::InterlockedExchange() в Win2000 реализована:
mov         ecx,dword ptr [esp+4]
mov         edx,dword ptr [esp+8]
mov         eax,dword ptr [ecx]
nop
cmpxchg     dword ptr [ecx],edx
jne         77E86ACD
ret         8

а не

mov         ecx,dword ptr [esp+4]
mov         eax,dword ptr [esp+8]
xchg        dword ptr [ecx], eax
ret         8

?

В чем была глубокая идея использования цикла + cmpxchg вместо простого xchg?


                                             Sincerely yours, Prihodko Michael.

---
 * Origin: Crusader was there! o=|======> (2:450/159.24)