以下の 2 つのコード サンプルは同等ですか?
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;
}
- 2 番目のサンプル: 戻り値のコピーが作成された後、ロックは範囲外になりますか? これは、コピーするための多くの命令を持つオブジェクトが返された場合に問題になります。
- int 値のみを返す場合、ロックは必要ですか? それとも int のコピーはアトミック操作ですか?