Boost logo

Boost Users :

From: jc (k.jayachandran_at_[hidden])
Date: 2007-05-21 15:05:08


I created a new thread as follows
m_pLoginThread = new boost::thread(boost::bind(&CCCP::LoginThread, this));

void CCCP::LoginThread(void){
    /*
    LoginThread
    when we start a session with a slave, this process is started and will
be done, once
    session login is done.
    */

    int nSendResult = 0;
    m_bConnectThreadActive = true;
    while(m_bConnectThreadActive){
        nSendResult = SessionLogin();
        if(nSendResult == 0){
            //the message has been acknowledged. so get out
            m_bConnectThreadActive = false;
            break;
        }
        Sleep(25L);
    }//active while the threadactive is true

}
int CCCP::SessionLogin(void){
    /*
    called by: ConnectThread
    calls : SendAndWait, CCPConnect, CCPExchangeID, GetSeedData
    returns : 0 is all is done to connect to the slave, -1 if not
successful.
    1 for part success
    */
   //here i do a lot of other activities and once it is complete i call the
function below
    OnSuccessfulLogin();
    return 0;
}
void CCCP::OnSuccessfulLogin(void){
    /*
    OnSuccessfulLogin
    called once login process is successful.
    first we kill the connectthread process
    once successful, we need to make sure that we find more information
about the daq list this slave
    will allow.
    so we do that by calling the function StartDAQThread
    */
if(m_pLoginThread){
        m_pLoginThread->join();
        delete m_pLoginThread;
        m_pLoginThread = NULL;
    }

}

the above code kind of gets deadlocked in m_pLoginThread->join(),
i guess this is because this is part of the thread loginthread and the join
waits for the thread to wait, but it won't be over till this function is
returned. i'm in a deadlock.

i wanted to know, how do i end a thread or process when i'm in the same
thread.

thanks

-- 
jc (jayachandran kamaraj)


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