如何在c ++中同步getter和setter方法

如果在同一类中有以下两种方法。

bool CSettings::GetDelayTimer() { return m_iTimerDelay; } void CSettings::SetDelayTimer(int iTimerdelay) { m_iTimerDelay = iTimerdelay; } 

为了同步上面的方法,我创build了以下locking/解锁方法。

  void CSettings::Lock() { DWORD dwRet = WaitForSingleObject(m_hSettingsLock, INFINITE); if( dwRet == WAIT_OBJECT_0) return; } void CSettings::UnLock() { ReleaseMutex(m_hSettingsLock); } 

如何使用locking/解锁来同步这些getter / setter方法。 如果我在getter方法中使用lock,我不会得到解锁的机会,因为它会在解锁之前返回。 我的意思是说:Lock(); 返回m_iTimerDelay; 开锁(); 它会工作吗? 将locking/解除locking应用于setter不是问题。

任何想法来同步这些方法?

问候,Khurram。

使用RAII 。 创建一个对象,其构造函数获取该锁并且其析构函数释放它。 那么你可以做:

 { ScopedLock f(m_hSettingsLock); return m_iTimerDelay; } 

ScopedLock::~ScopedLock释放锁。

或者,最可能的劣等:

 { Lock(); bool ret = m_iTimerDelay; Unlock(); return ret; } 

请注意,在这两种情况下,返回的值可能是陈旧的。