On Nov 3, 2004, at 10:28 AM, 蹬三轮的 wrote:
Recently, I download boost 1.31.0 and compile it with Visual studio.net 2003. But the code below can't work properly:
class A { public: A() { printf("constructor.\n"); }
~A() { printf("destructor.\n"); }
void operator () () { } };
int main(int argc, char* argv[]) { A a; boost::thread t(a); t.join(); }
In my system, it generate the message like this: D:\thread\Debug>thread.exe constructor. destructor. destructor. destructor. destructor. destructor. destructor.
Who can tell me what's wrong with boost or something else?
The A object is being copied several times. Add in a constructor like this to see what is going on: A(const A&) { printf("copy constructor.\n"); } If you really don't want copying to occur, use: boost::thread t(boost::ref(a)); Doug