下面的两个代码示例是否等价?
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的复制是原子操作吗?