>>707 スピンカウント

LONG spin_count = 0; // どっかグローバルなところ。

void Lock()
{
 while( ::InterlockedExchange( &spin_count, 1 ) != 0 )
 Sleep(0);
}

void UnLock()
{
::InterlockedExchange( &spin_count, 0 );
}