0
我有兩個線程A和B線程A應該被阻塞,直到從threadB信號,該pthread_cond_signal會似乎並不奏效:pthread_cond_signal會在堆棧變量不工作
struct TR_EVT
{
Dest* pQDest ;
pthread_cond_t evWait ;
pthread_mutex_t mutex_tr ;
};
DataSet dSet ;
threadA()
{
TR_EVT TrEvt ;
dSet->setContext(&TrEvt);
pthread_cond_init(&TrEvt.evWait, NULL);
.
.
cout << "Entering Sleep\n" ;
pthread_mutex_lock(&TrEvt.mutex_tr);
pthread_cond_wait(&TrEvt.evWait, &TrEvt.mutex_tr);
pthread_mutex_unlock(&TrEvt.mutex_tr);
cout << "Out of Sleep\n" ;
}
threadB()
{
.
.
TR_EVT * pTrEvt = NULL ;
pTrEvt = (TR_EVT *)dSet->getContext()
.
.
cout << "Signalling...\n" ;
pthread_mutex_lock(&(pTrEvt->mutex_tr));
pthread_cond_signal(&(pTrEvt->evWait); //wake up thread A
pthread_mutex_unlock(&(pTrEvt->mutex_tr));
.
.
.
}
的ThreadA()永遠不會醒來。可能是什麼問題呢 ?感謝任何幫助
很清楚,非常感謝。 – user1409254