|
#1
|
|||
|
|||
Vista/7/8: SRW lock - что внутри?
Serguei E. Leontiev написал(а) к All в Mar 15 07:15:23 по местному времени:
From: "Serguei E. Leontiev" <leo@sai.msu.ru> Всем привет, Быть может, кто либо знает, как работают новые функции Vista/7/8, которых в XP ещё не было AcquireSRWLockExclusive()/ReleaseSRWLockExclusive(). Просветите страждущего. До последнего времени, я считал что самым быстрым способом узнать что делается в другом потоке - это просто проверять некоторую переменную (банальный spinlock). Однако оказалось, что на двух протестированных мною системах: Windows 8.1 на Нaswell (Core i7-4960НQ) и Windows 7 на Sandy Bridge (Core i7-3960X), функции AcquireSRWLockExclusive()/ReleaseSRWLockExclusive() работают почти в три раза шустрее, чем те spinlock-и, которые я сумел измыслить. Замечу, что эти spinlock-и были, в свою очередь, в пару раз шустрее, чем EnterCriticalSection()/LeaveCriticalSection(). Windows 8.1 на Нaswell (Core i7-4960НQ) два потока: --------------------------------------------------- AcquireSRWLockExclusive/ReleaseSRWLockExclusive 90 тактов 6*10^7 оп/с spinlock (TATAS, ticket) 270 тактов 2*10^7 оп/с EnterCriticalSection/LeaveCriticalSection 430 тактов 1*10^7 оп/с Что же такое они используют: - Inter-processor interrupt (IPI)? (Говорят IPI не слишком шустрые, правда, я лично не проверял); - Команды MONITOR/MWAIT? - Может быть, это какой нибудь трюк с планировщиком? -- Успехов, Сергей Леонтьев. E-mail: lse@CryptoPro.ru --- ifmail v.2.15dev5.4 |