In C++, during a class constructor, I started a new thread with this pointer as a parameter which will be used in the thread extensively (say, call
I'd say that, as a general rule, you should avoid doing this. But you can certainly get away with it in many circumstances. I think there are basically two things that can go wrong:
Generally speaking, if you have complex, error-prone initialization to perform, then it's best to do it in a method rather than the constructor.