簡體   English   中英

Pthread和類

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM