哪些主要操作系统/平台实现了等待变形?
当我注意到没有明确的最佳实践时,就出现了这个问题,即是否应该在互斥锁锁定的情况下向条件变量发出信号。一个典型的建议是在持有锁的同时发出信号,除非分析显示解锁带来的显着性能改进开销(通过删除额外的上下文切换)。
IIUC,在发信号时持有锁的唯一缺点是额外的两个上下文切换;优点是出现错误的风险较低,并且更容易实现实时可预测性。
因此,似乎如果实现了等待变形,那么在发信号时持有锁的做法会更好。
language-agnostic linux multithreading window condition-variable