деструкт залоченного мьютекса
От: niXman Ниоткуда  
Дата: 15.11.18 09:26
Оценка:
привет!

есть некоторый класс, использующий boost::recursive_mutex.
при деструкте мьютекса ловлю assert() тут: https://github.com/boostorg/thread/blob/develop/include/boost/thread/pthread/recursive_mutex.hpp#L99
причина в том, что мьютекс залочен, а я всю жизнь знал, что нельзя деструктить залоченный мьютекс.
но проблема еще и в том, что, оказывается, можно деструктить залоченный boost::recursive_mutex на венде.
boost::recursive_mutex на венде реализован как спин-лок, и в деструкте нет никаких проверок на то, залочен мьютекс, или нет. но столь разное поведение создает пролему переносимости кода, потому что вышеописанная ситуация не возникает на венде, и ребята писавшие этот код о проблемем и не знали до линукса.

вопроса у меня два:
1)есть ли мысли, почему бустописатели допустили столь разное поведение?
2)считается ли нормальным, по вашему мнению, деструктить залоченный мьютекс?

спасибо.
Слово "совпадение" появилось после падения сов.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.