rsnt_translations
56,430
edits
No edit summary |
No edit summary |
||
Line 109: | Line 109: | ||
} | } | ||
}} | }} | ||
Dans cet exemple basé sur le contenu du fichier ''thread.c'' plus haut, l'accès | Dans cet exemple basé sur le contenu du fichier ''thread.c'' plus haut, l'accès au canal de sortie standard est sérialisé comme il se doit avec un mutex. L'appel de <tt>[http://pubs.opengroup.org/onlinepubs/7908799/xsh/pthread_mutex_lock.html pthread_mutex_lock]</tt> effectue le blocage, c'est-à-dire que le fil attendra indéfiniment que le mutex devienne disponible. Il faut s'assurer que le code ne provoque pas d'autre blocage puisque le mutex doit éventuellement devenir disponible. Ceci pose problème surtout dans un programme réel qui comporte plusieurs variables mutex contrôlant l'accès à différentes structures de données globales. | ||
<br /> | <br /> | ||
Dans le cas de l'alternative non bloquante <tt>[http://pubs.opengroup.org/onlinepubs/7908799/xsh/pthread_mutex_lock.html pthread_mutex_trylock]</tt>, la valeur non nulle est immédiatement produite si le mutex n'est pas accompli, indiquant ainsi que le mutex est occupé. Il faut aussi s'assurer qu'il n'y a pas de code superflu à l'intérieur du bloc sérialisé; puisque ce code est exécuté en série, il se doit d'être le plus concis possible afin de ne pas nuire au parallélisme dans l'exécution du programme. | Dans le cas de l'alternative non bloquante <tt>[http://pubs.opengroup.org/onlinepubs/7908799/xsh/pthread_mutex_lock.html pthread_mutex_trylock]</tt>, la valeur non nulle est immédiatement produite si le mutex n'est pas accompli, indiquant ainsi que le mutex est occupé. Il faut aussi s'assurer qu'il n'y a pas de code superflu à l'intérieur du bloc sérialisé; puisque ce code est exécuté en série, il se doit d'être le plus concis possible afin de ne pas nuire au parallélisme dans l'exécution du programme. |