使多个pthreads在相同的条件下等待,所有都被线程零唤醒

时间:2016-12-07 05:26:02

标签: c pthreads

案例是:有多个(比如n ^ 2)pthreads都来自同一个函数。 id为零的Pthread是master。 每个pthread(除零之外)都有一个for循环,运行n次

for(j=0;j<n;j++)
{   pthread_mutex_lock(&conditionmutex);
    pthread_cond_wait(&cv,&conditionmutex);
    pthread_mutex_unlock(&conditionmutex);
    do something;
}

对于线程零,它是

for(j=0;j<n;j++)
{   pthread_cond_broadcast(&cv);
    do something else;
}

我预计每个pthread(非零)将在for循环开始时等待。 线程零将发出信号然后所有其他线程将“做某事” 然后在循环开始时再次等待j的递增值。 我的程序在开始时陷入困境。 无法找出原因。

感谢。

PS:cv是条件变量初始化为NULL,类似于互斥变量'conditionmutex'。

pthread_cond_t cv;
pthread_cond_init(&cv, NULL);
pthread_mutex_init(&conditionmutex, NULL);

我在为函数循环之前设置了n ^ 2个线程的障碍。 这可确保创建所有线程并在循环之前等待。

我想知道 - 如果我的方法还可以吗?

0 个答案:

没有答案