[英]Pthreads and classes
我制作了一個包含存儲向量和互斥對象的Queue類。 要初始化隊列,需要啟動一個線程。 為了確保正確啟動線程,構造函數等待一個信號。 線程函數是Queue類的朋友。 但是,由線程功能發送時,信號未注冊。 為什么?
Queue::Queue()
{
(...)
pthread_mutex_init( &mutex_cond_init, NULL);
Q_ready = false;
(...)
pthread_create(&thread_ID, NULL, Queue_function, this);
pthread_mutex_lock(&mutex_cond_init);
while(!Q_ready)
{
cout << "waiting" << endl;
pthread_cond_wait(&cond_init,&mutex_cond_init);
cout << "got signal" << endl;
}
pthread_mutex_unlock(&mutex_cond_init);
cout << "Queue open." <<endl;
}
void * Queue_function (void*arg)
{
(...)
Queue * S = (Queue*) arg;
pthread_mutex_lock(&(*S).mutex_cond_init);
(*S).Q_ready = true;
pthread_cond_signal(&(*S).cond_init);
pthread_mutex_unlock(&(*S).mutex_cond_init);
(...)
}
任何幫助,將不勝感激
您初始化了cond_init
嗎? 您的代碼僅顯示mutex_cond_init
初始化。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.