gpt4 book ai didi

c++ - 互斥体和锁

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:17:48 24 4
gpt4 key购买 nike

下面的两个代码示例是否等效?

Poco::ProcessHandle::PID ProcessRunner::processId() const
{
Poco::ProcessHandle::PID pid = 0;
mMutex.lock();
pid = mPID;
mMutex.unlock();
return pid;
}

,

Poco::ProcessHandle::PID ProcessRunner::processId() const
{
Poco::ScopedLock<Poco::Mutex> lock(mMutex);
return mPID;
}
  • 在第二个示例中:在创建返回值拷贝后,锁是否会超出范围?如果返回的对象包含许多复制指令,这将很重要。
  • 如果您只返回一个 int 值,是否需要锁定?还是 int 的复制是原子操作?

最佳答案

它们是等价的。在 block 的最后一行被执行之前,局部变量不会超出范围。所以在这种情况下,返回值的拷贝是在锁的保护下进行的。

关于c++ - 互斥体和锁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1751611/

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