Мне известно о неопределенном поведении при вызове pthread_cond_destroy (), когда есть поток 1+, ожидающий на условной переменной, и я ищу обходной путь для отправки сигнала пробуждения всем потокам , ожидающим наусловная переменная перед вызовом pthread_cond_destroy ().
Мой деструктор класса CV вызывает pthread_cond_destroy (), если условная переменная допустима.Поэтому я подумал:
Передача перед вызовом pthread_cond_destroy (), но это приведет к пробуждению только 1 потока.Я хочу, чтобы деструктор завершился успешно и чтобы ни один поток не мог ждать объекта cv (нет разыменования на разрушенном объекте).
Способ подсчета сигналов (наряду с обходным решением № 1)исправить эту проблему?Если да, как я могу убедиться, что все ожидающие потоки были запланированы (разбужены) до успешного выполнения ~ CV ()?
Преодолеть ли я эту проблему, если использую поток или условие C ++ 11переменная?