Какие ОС/платформы реализуют оптимизацию морфинга ожидания?

Какие основные ОС/платформы реализуют морфинг ожидания?

Этот вопрос возник, когда я заметил, что нет четкой передовой практики о том, следует ли сигнализировать условную переменную с заблокированным мьютексом или нет. Отношение типичная рекомендация — подавать сигнал, удерживая блокировку, если только профилирование не показывает существенного повышения производительности при разблокировке (путем удаления дополнительного переключения контекста).

IIUC, единственным недостатком удержания блокировки во время сигнализации являются два дополнительных переключателя контекста; преимущества заключаются в более низком риске ошибки и более легкой предсказуемости в реальном времени.

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


person max    schedule 18.07.2017    source источник
comment
На news.ycombinator.com/item?id=11893756 есть неопределенные доказательства того, что Linux реализует это. спецификация pthreads поддерживает преобразование ожидания, а ссылка утверждает, что фьютексы Linux, которые условные переменные, также поддерживают его.   -  person Kevin Yin    schedule 17.07.2019