<p>What's the best way to perform a deep copy in the constructor of an object that is part of multi-threaded C++ code?</p>

My first impulse (I'm not an expert):
Have a lock on that object that the code uses for writing to it. When you're deep copying, lock the object, perform your deep copy, and then unlock it.
Or, am I missing something here?