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)