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_ptrboost::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;