Boost logo

Boost Users :

Subject: Re: [Boost-users] Thread function only called one time. why?
From: Igor R (boost.lists_at_[hidden])
Date: 2012-08-23 07:41:11


> 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?

Maybe the loop never breaks? Maybe you lock a mutex within the loop,
and this causes a deadlock? Maybe some code within the loop raises an
exception?
Just step your loop line by line or, if it's impossible, print-out
some log lines to trace it, like this:
     while(run == true)
     {
        log("point 1");
        doSomeThing....
        log("point 2");
        doSomeMore....
        log("point3");
     }
     log("point4");
     cleanup code;


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