hmm... but why should Lock() be const in the first place? It changes the observable state of the object. The same goes for Unlock().