Pthreads和类

时间:2011-06-22 10:00:47

标签: c++ class pthreads posix

我创建了一个包含存储向量和互斥锁的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);
    (...)
}

任何帮助将不胜感激

1 个答案:

答案 0 :(得分:0)

您是否已初步化cond_init?您的代码仅显示mutex_cond_init的初始化。