gpt4 book ai didi

c++ - 在 C++11 中,是否有 std::lock_guard 的变体在构造时解锁并在销毁时锁定?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:10:50 27 4
gpt4 key购买 nike

有好几次我写了一些代码,可以从“反向”lock_guard 中获益,就像在这个简短的例子中一样。

std::lock_guard<std::mutex> lg(_eventQueueMutex);
while (!_eventQueue.empty())
{
Event e = _eventQueue.top();

_eventQueue.pop();
_eventQueueMutex.unlock(); // Manual unlock
dispatchEvent(e);
_eventQueueMutex.lock(); // Manual lock
}

有没有办法用 C++11 中的自动 lock_guard 替换内部解锁/锁定?

最佳答案

您可以编写自己的 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_;
};

关于c++ - 在 C++11 中,是否有 std::lock_guard 的变体在构造时解锁并在销毁时锁定?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23467635/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com