|
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