Good day all,
Is there a logical way to lock data in an accessor?
Because accessors are generally declared as const methods and a lock() operation is not, how can you lock the class internally when the accessor is called?
For example:
	When I implement GetValue(), i'd like to do:
	But obviously this isn't good, since Lock/Unlock aren't const (and can't be).
I am sure I am not the first to try to make a class thread safe so I guess I'm just missing something...
Thanks!
EDIT: Strangely, I knew of a possible solution and yet it just disappeared from my head: using const_cast on the instance of the class (or lock) would be a valid solution. But would it be the best? What do you think?
					Is there a logical way to lock data in an accessor?
Because accessors are generally declared as const methods and a lock() operation is not, how can you lock the class internally when the accessor is called?
For example:
Code:
	class Class
{
public:
  int GetValue() const;
protected:
  void Lock();
  void Unlock();
private:
  int m_Value;
}
Code:
	int Class::GetValue()
{
  Lock();
  int TmpValue = m_Value;
  Unlock();
  return(TmpValue);
}
I am sure I am not the first to try to make a class thread safe so I guess I'm just missing something...
Thanks!
EDIT: Strangely, I knew of a possible solution and yet it just disappeared from my head: using const_cast on the instance of the class (or lock) would be a valid solution. But would it be the best? What do you think?
Comment