You may write your own unlock_guard:
template <class T>
class unlock_guard {
public:
unlock_guard(T& mutex) : mutex_(mutex) {
mutex_.unlock();
}
~unlock_guard() {
mutex_.lock();
}
unlock_guard(const unlock_guard&) = delete;
unlock_guard& operator=(const unlock_guard&) = delete;
private:
T& mutex_;
};