199 votes

Pourquoi les fonctions de variable conditionnelle de pthreads nécessitent-elles un mutex?

Je lis sur pthread.h ; les fonctions liées à la variable de condition (comme pthread_cond_wait(3) ) nécessitent un mutex comme argument. Pourquoi? Autant que je sache, je vais créer un mutex juste pour l'utiliser comme argument? Qu'est-ce que ce mutex est censé faire?

3voto

Amber Points 159296

Le mutex est censé être verrouillé lorsque vous appelez pthread_cond_wait ; quand vous l'appelez, il déverrouille de manière atomique le mutex et bloque la condition. Une fois que la condition est signalée, elle la verrouille à nouveau et revient.

Cela permet la mise en œuvre d'une planification prévisible si nécessaire, dans la mesure où le thread qui ferait la signalisation peut attendre que le mutex soit libéré pour effectuer son traitement, puis signaler la condition.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X