Re[9]: Memory barrier не могу понять что это
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 06.04.23 20:24
Оценка: 92 (3)
Здравствуйте, Философ, Вы писали:

Ф>SpinLock не стоило относить к высокоуровневым.


Spin locks активно используются в ядрах ОС, в тех случаях, когда чисто технически невозможно выполнить ожидание с переключением контекста, а можно лишь поциклить какое-то разумное время (единицы-десятки микросекунд) в надежде, что параллельный, ядерный же, код, который не может быть прерван в любой момент на сколь угодно долгое время, быстро сделает свои дела и освободит блокировку. Если тщательно не следить за временем, проводимым в циклах, легко наплодить глюков — например, виндовые драйверы нередко проводят в ожидании сотни микросекунд, хотя положено не более 25.

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