class CSPINLOCK{
volatile LONG into;
public:
void Lock1();
void Lock2();
void Unlock();
};
CSPINLOCK::CSPINLOCK()
: into(0)
{
}
void CSPINLOCK::Lock1()
{
while( 0 != ::InterlockedExchange(&into, 1) );
}
void CSPINLOCK::Lock2()
{
for(;;)
{
while(into);
if(0 == ::InterlockedExchange(&into, 1))
break;
}
}
void CSPINLOCK::Unlock();
{
::InterlockedExchange(&into, 0);
}
Lock1이 빠르냐 Lock2가 빠르냐
from. Unlock이 빠르다고 생각하는 백왕이...
:P
U 2 1