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
#include <iostream>
#include
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