我对pthread_cond_signal和pthread_cond_wait有疑问。例如,在下面的代码,根据我的理解,当可count_mutex在inc_count的被解锁后才能被执行inc_count的调用调用pthread_cond_signal,计数+ = 125在WATCH_COUNT部。关于pthread_cond_signal和pthread_cond_wait
的count_mutex在WATCH_COUNT部被解锁时调用pthread_cond_wait执行后调用pthread_mutex_unlock在inc_count的只执行被锁定。我对吗?
void *inc_count(void *t)
{
int i;
long my_id = (long)t;
for (i = 0; i < TCOUNT; i++)
{
pthread_mutex_lock(&count_mutex);
count++;
if (count == COUNT_LIMIT)
{
pthread_cond_signal(&count_threshold_cv);
}
pthread_mutex_unlock(&count_mutex);
}
pthread_exit(NULL);
}
void *watch_count(void *t)
{
long my_id = (long)t;
pthread_mutex_lock(&count_mutex);
while (count < COUNT_LIMIT)
{
pthread_cond_wait(&count_threshold_cv, &count_mutex);
count += 125;
}
pthread_mutex_unlock(&count_mutex);
pthread_exit(NULL);
}
我从POSIX线程教程拷贝了这段代码,所以它只是为了学习的目的。 – MetallicPriest