mes questions sur pthread_cond_signal et pthread_cond_wait. Par exemple, dans le code ci-dessous, selon ma compréhension, lorsque inc_count appelle pthread_cond_signal, nombre + = 125 dans WATCH_COUNT peut être exécutée qu'après count_mutex est déverrouillé dans inc_count.A propos pthread_cond_signal et pthread_cond_wait
Le count_mutex a été débloquée dans WATCH_COUNT lorsque pthread_cond_wait exécuté et seulement après se verrouille pthread_mutex_unlock dans inc_count est exécuté. Ai-je raison?
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);
}
J'ai copié ce code à partir d'un didacticiel sur les threads POSIX, donc à des fins d'apprentissage. – MetallicPriest