Boost logo

Boost Users :

From: Jos Hickson (jos.hickson_at_[hidden])
Date: 2006-11-24 03:45:09


On 24/11/06, Fred J. <phddas_at_[hidden]> wrote:
> 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 <boost/thread/thread.hpp>
> #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


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net