On 24/11/06, Fred J.
Hi the code below compiles and runs, but does not do what I want. how can I get the code below to print out: "I am child 1sub thread called."
thanks
**************************************** ************************** #include
#include <string> #include <iostream> using namespace std; class Child { string c; public: Child(string x):c(x){ } void operator()(){ cout << c << " sub thread called." << endl; } };
class Parent { string p; public: Parent(string x):p(x){} void operator()(){ cout << p << "thread called." << endl; Child c1("I am child 1"); boost::thread c1t(c1); } };
int main(){ Parent p1("I am parent 1: "); boost::thread p1t(p1); }
Hello, I think you need to join both threads c1t and p1t (i.e. c1t.join() and p1t.join()) before either object goes out of scope lest the thread objects themselves are destroyed (and main() exits) prior to the threads themselves completing their work. Regards, Jos Hickson