gpt4 book ai didi

c++ - 在范围锁定之前检查可选的互斥锁

转载 作者:行者123 更新时间:2023-11-30 01:26:18 29 4
gpt4 key购买 nike

我有一个构造函数,可以选择允许用户将 ponter 传递给 Boost 互斥锁。如果没有提供互斥锁,成员指针 pMyMutex 被设置为 NULL。这使用户可以根据需要选择应用一些线程安全。但是,由于显而易见的原因,我不能在这种检查中使用 scoped_lock :)

if (pMyMutex != NULL)
const boost::mutex::scoped_lock l(*pMyMutex);

//The lock is already out of scope
processStuff(x, y, z);

谁能针对这样的要求提出一个简洁明了的解决方案?

最佳答案

实现您自己的类似于 scoped_lock 的包装器以隐藏其中的决定:包装指向互斥锁的指针并检查指针是否为空(未应用锁定)或不为空(应用锁定)。一些骨架:

class ScopedLockEx
{
public:
ScopedLockEx( boost::mutex* pMutex)
: pMutex_( pMutex)
{
if( pMutex_) pMutex_->lock();
}

~ScopedLockEx()
{
if( pMutex_) pMutex_->unlock();
}
private:
boost::mutex* pMutex_;
};

关于c++ - 在范围锁定之前检查可选的互斥锁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10752280/

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