hello all i'm new to boost thread. i'm converting my win32 based thread application to boost so that in future i can be portable. this is my code void CVectorCAN::xlVectorThreadByCh(void){ //do something here while(m_bVectorThreadAlive){ WaitForSingleObject(m_hxlEventHandle, 50); xlStatus = XL_SUCCESS; while(!xlStatus){ if(m_bReceiveStatus){ { boost::mutex::scoped_lock lock1(m_AckMutex1); m_bVectorThreadDead = true; m_cond1.notify_one(); } return; } //process data here }//while xl_success }//while the thread is alive m_bVectorThreadDead = true; } int CVectorCAN::KillVectorBoostThread(void){ boost::mutex::scoped_lock lock2(m_AckMutex1); m_bVectorThreadAlive = false; m_bReceiveStatus = true; while(!m_bVectorThreadDead){ m_cond1.wait(lock2); } m_pVectorThread->join(); delete m_pVectorThread; m_pVectorThread = NULL; return 0; } my function deadlocks in the m_cond1.wait(lock2) i have no idea what i'm doing wrong. any pointer in the right direction will be great thanks -- jc (jayachandran kamaraj)