Pour citer la page de man:
Lors de l'utilisation de variables de condition, il y a toujours un Booléen prédicat de partager des variables associées à chaque état d'attente qui est vrai si le thread doit procéder. Les réveils intempestifs de la pthread_cond_timedwait() ou pthread_cond_wait() les fonctions peuvent se produire. Depuis le retour de pthread_cond_timedwait() ou pthread_cond_wait() n'implique rien sur la valeur de ce prédicat, le prédicat doit être réévalué à un tel retour.
Donc, pthread_cond_wait
pouvez retourner même si vous n'avez pas signalé. À première vue tout au moins, qui semble assez atroce. Ce serait comme une fonction aléatoire retourné la valeur erronée ou de manière aléatoire retourné avant de parvenir à une bonne instruction de retour. Il semble comme un bug majeur. Mais le fait qu'ils ont choisi de ce document dans la page de man plutôt que de fixer, semblerait indiquer qu'il existe un motif légitime pourquoi pthread_cond_wait
finit par se réveiller injustifiées. Sans doute, il y a quelque chose d'intrinsèque au sujet de la façon dont il fonctionne, qui fait en sorte que ce ne peut pas être aidé. La question est de savoir quoi.
Pourquoi n' pthread_cond_wait
retour faussement? Pourquoi ne peut-il pas vous garantir qu'il va se réveiller quand il a été correctement signalé? Quelqu'un peut-il expliquer la raison de sa fausse comportement?