gpt4 book ai didi

c++ - 如何确保只有 1 个互斥量?

转载 作者:太空狗 更新时间:2023-10-29 23:21:39 25 4
gpt4 key购买 nike

我在这里运行一些线程安全的代码。我正在使用互斥锁来保护一次只需要由 1 个线程运行的代码部分。我遇到的问题是使用这段代码有时我会得到 2 个 Mutex 对象。顺便说一下,这是一个静态函数。如何确保只创建 1 个互斥对象??

/*static*/ MyClass::GetResource()
{

if (m_mutex == 0)
{
// make a new mutex object
m_mutex = new MyMutex();
}

m_mutex->Lock();

最佳答案

只需在 GetResource() 之外创建 m_mutex,然后再调用它 - 这会删除围绕实际创建互斥锁的关键部分。

MyClass::Init()
{
m_mutex = new Mutex;
}

MyClass::GetResource()
{
m_mutex->Lock();
...
m_mutex->Unlock();
}

关于c++ - 如何确保只有 1 个互斥量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1338403/

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