
Fred J." wrote 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." Hi Fred! Three things I noticed. I'm not a user of boost.thread, but I did get your example to work. Three things. (1) I think you want to pass a reference to p1 and c1, rather than copy them. (2) std:string is not thread-safe. (3) You need to delay to allow the other threads time to run. #include <boost/thread/thread.hpp> #include <iostream> #include <windows.h> using namespace std; class Child { const char* c; public: typedef void result_type; Child(const char* x):c(x){ } void operator()(){ cout << c << " sub thread called." << endl; } }; // Child class Parent { const char* p; public: typedef void result_type; Parent(const char* x):p(x){} void operator()(){ cout << p << "thread called." << endl; Child c1("I am child 1"); boost::thread c1t(ref(c1)); Sleep(10); } }; // Parent int main(){ Parent p1("I am parent 1: "); boost::thread p1t(ref(p1)); Sleep(10); return 0; } // main