Boost logo

Boost Users :

Subject: Re: [Boost-users] Thread function only called one time. why?
From: Krzysztof Czainski (1czajnik_at_[hidden])
Date: 2012-08-23 09:17:11


2012/8/21 young <yqin_99_at_[hidden]>:
> I have a MFC application which use boost thread. I have created several
> threads like m_pReadThread / m_pProcessThread / m_pWriteThread
>
> m_pProcessThread = boost::shared_ptr<boost::thread>(new
> boost::thread(boost::bind(&CMFCDlg::ProcessThreadBoost, this)));
>
> in each thread, the thread function structure looks like:
> {
> init;
> while(run == true)
> {
> // set break point here
> ...
> }
> cleanup code; // set break point here
> }
>
> I set break point When I run my application, one of the thread only reach
> the first break point once. The second break point never reached. What might
> be the problem?
>
> Since the code is part of a big project. I can not put code here.

Maybe your program ends before your threads end?

For example I think this will terminate your threads before they finish:
int main()
{
  thread* a = new thread(...);
  thread* b = new thread(...);
}

And what you need is something like:

int main()
{
  thread* a = new thread(...);
  thread* b = new thread(...);
  a->join();
  b->join();
}

Regards,
Kris


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