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