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