【发布时间】:2010-12-17 14:53:44
【问题描述】:
下面的两个代码示例是否等效?
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 的复制是原子操作?
【问题讨论】:
标签: c++ multithreading mutex poco-libraries