Доброго времени суток!
Подскажите, возможно ли заставить поток ожидать освобождения мьютекса без его захвата? Если использовать pthread_mutex_lock то после освобождения мьютекса ожидающий поток захватит его, а этого надо избежать по следующей причине - мьютекс может быть после освобождения уничтожен тем потоком, который захватил его раньше.
Другими словами мне нужно разрешить следующую ситуацию:
Поток 1 - поиск объекта и захват мьютекса (успешный) - trylock
Поток 2 - поиск объекта и попытка захвата (не успешная) - trylock, ожидаем освобождения мьютекса - lock.
Поток 1 - удаление объекта из списка, освобождение мьютекса, уничтожение объекта и мьютекса
Поток 2 - продолжение работы, освобождение УНИЧТОЖЕННОГО мьютекса и повторный рекурсивный поиск объекта (он не будет найден - это нормальная ситуация)
Таким образом, происходит уничтожение в первом потоке мьютекса, блокиремого вторым, что очевидно ненормально. В качестве выхода вижу вариант ожидания освобождения мьютекса без его захвата, но не знаю, есть ли такая возможность (C++, Linux, POSIX). В качестве некрасивого варианта вижу цикл с trylock и sleep.
Спасибо!