Making inside-out objects thread-safe is not a trivial process, but it can be done. Object::InsideOut is thread-safe, and even goes further by providing support for threads::shared.
You might consider converting your Common::Thing module into a wrapper around Object::InsideOut to give you the functionality you need.
Remember: There's always one more bug.
Comment on Re^2: Seeking inside-out object implementations