/ / Блокування спин проти блокування мьютекса сну - блокування, м'ютекс, спінлкі

spin lock v mutex lock lock - locking, mutex, spinlock

Замки обертання (зайняті замки очікування) більшеефективний, ніж блокатори сну mutex, дуже короткі критичні розділи. Припустимо, що контекст перемикає час для системи (час, який потрібно до зберегти поточний процес і завантажити наступний) - час Т. Скільки часу може критичний розділ бути перед тим, як ефективніше використовувати блокування сну mutex, а не віджим?

Відповіді:

0 для відповіді № 1

Це залежить від конкретного випадку. Скільки процесорного часу ви готові спалити на спінінгу, щоб швидше прокинутися?

Колись Intel сказав 20 циклів. Але це було дуже давно в часи на набагато більше ниток, ніж ядер.

Якщо ваша нитка очікування дуже важлива для вас, у неї було б власне виділене ядро, і вам не було б байдуже крутитися назавжди задля остаточного найшвидшого пробудження.

Якщо це менш критично, ніж це, і ядроспільно з іншими потоками, можливо, ви захочете надати процесору час якомусь іншому потоку. Якщо ви цього не зробите, з часом ОС зробить це за вас, але це, очевидно, менше оптимального.

Підсумок - протестуйте та перевірте різницю в продуктивності, а потім повторіть ітерацію, повторне тестування тощо