using recursive mutex

This commit is contained in:
2026-03-17 19:14:14 +03:00
parent 449978bda0
commit e761625eab

View File

@@ -49,15 +49,11 @@ public:
public:
//! \~english Move constructor - transfers ownership of the lock.
//! \~russian Конструктор перемещения - передает владение блокировкой.
Pointer(Pointer && other): pv(other.pv) { other.can_unlock = false; };
Pointer(Pointer && other): pv(other.pv) { pv.mutex.lock(); };
//! \~english Destroys wrapper and releases the mutex.
//! \~russian Уничтожает обертку и освобождает мьютекс.
~Pointer() {
if (can_unlock) {
pv.mutex.unlock();
}
}
~Pointer() { pv.mutex.unlock(); }
//! \~english Returns pointer access to the protected value.
//! \~russian Возвращает указательный доступ к защищенному значению.
@@ -72,7 +68,6 @@ public:
explicit Pointer(PIProtectedVariable<T> & v): pv(v) { pv.mutex.lock(); }
PIProtectedVariable<T> & pv;
bool can_unlock = true;
};
//! \~english Replaces the protected value with \a v.