Re[10]: Memory barrier не могу понять что это
От: Философ Ад http://vk.com/id10256428
Дата: 06.04.23 21:09
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>Использовать такое на пользовательском уровне нужно с осторожностью, поскольку поток, вошедший в такой цикл, может быть прерван, и другой поток, пытающийся его дождаться, исчерпает свой квант, и тоже будет вытеснен. До какой-то частоты использования такие блокировки позволяют сэкономить на переключениях в ядро, но дальше они могут привести к резкому росту накладных расходов. Особенно в том случае, если код отлаживался на восьмиядерном процессоре, а затем запущен на двухъядерном, где вероятность прерывания потока примерно вчетверо выше.


Я знаю это. Спинлоки у меня там, где ожидаемое время WaitForSingleObject() на сигнальном объекте, например на свободном мьютексе, больше чем время ожидания. Второй случай, когда я такое использую — протокол реализован на MMF, где одно из полей — признак занятости. Там просто без вариантов: Sleep(1) ждёт дольше чем нужно.
Всё сказанное выше — личное мнение, если не указано обратное.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.