Обратите внимание на одно ядро, вы можете изменить это, сняв блокировку, но это необходимо для многоядерности.

шал, что в Интернете есть книга Intel, в которой описываются циклы процессора, необходимые для конкретной инструкции по сборке, но я не могу это выяснить (после тяжелых попыток). Может кто-нибудь показать мне, как найти цикл процессора, пожалуйста?

Вот пример, в приведенном ниже коде mov / lock равен 1 циклу ЦП, а xchg - 3 цикла ЦП.

// This part is Platform dependent!
#ifdef WIN32
inline int CPP_SpinLock::TestAndSet(int* pTargetAddress, 
                                              int nValue)
{
    __asm
    {
        mov edx, dword ptr [pTargetAddress]
        mov eax, nValue
        lock xchg eax, dword ptr [edx]
    }
    // mov = 1 CPU cycle
    // lock = 1 CPU cycle
    // xchg = 3 CPU cycles
}

#endif // WIN32

Кстати: вот URL для кода, который я разместил:http://www.codeproject.com/KB/threads/spinlocks.aspx

Ответы на вопрос(3)

Ваш ответ на вопрос