【发布时间】:2016-08-10 14:23:29
【问题描述】:
如果 pthread_cond_init 如下静态初始化,pthread_cond_t cond = PTHREAD_COND_INITIALIZER;那么当发出 pthread_cond_signal(&cond) 时,是否应该在再次等待条件之前销毁 cond 变量?
我在下面提到它并没有解释这种情况。 http://linux.die.net/man/3/pthread_cond_init
在跟进 cmets 后编辑:
pthread_mutex_t mutex=PTHREAD_MUTEX_INITIALIZER;
pthread_cond_t cond=PTHREAD_COND_INITIALIZER;
pthread_attr_t attr;
int functionA (int a)
{
while ( a> 10)
{
pthread_mutex_lock(&mutex);
pthread_cond_signal(&cond);
a =15;
pthread_mutex_unlock(&mutex);
//pthread_cond_destroy(&cond); --- destroy after signalling
usleep(1000);
}
}
int functionB (int a)
{
while ( a > 10)
{
//pthread_attr_init( &attr );
// pthread_cond_init(&cond, &attr); --- if cond is destryoed
pthread_mutex_lock(&mutex);
pthread_cond_wait(&cond);
printf(" condition is unblocked <%d>",a);
pthread_mutex_unlock(&mutex);
usleep(1000);
}
}
int main (void)
{
int a =5;
pthread_attr_init( &attr );
pthread_create( NULL, &attr, functionB, NULL);
pthread_create( NULL, &attr, functionA, NULL);
while (1);
}
【问题讨论】:
-
你的意思是之后
pthread_cond_signal(&cond)? -
在 pthread_cond_signal(&cond) 和解锁互斥锁之后是。
标签: pthreads