Et sur cette même fonction de log, tu peux aussi provoquer un deadlock !
Ça paraît difficile à première vue, et ça l'ait, néanmoins je suis tombé récemment sur ce cas parce que le programme attrapait des signaux et déroutait l'exécution du thread receveur. Le thread receveur avait fait un lock() juste avant d'être dérouté, ce qui provoquait donc un blocage lorsqu'un autre thread voulait enregistrer quelque chose dans le log...
La solution consistait à bloquer les signaux pour tous les threads, sauf un.
[^] # Re: ouais
Posté par Laurent A. . En réponse au journal printf debugging considered harmful. Évalué à 1.
Ça paraît difficile à première vue, et ça l'ait, néanmoins je suis tombé récemment sur ce cas parce que le programme attrapait des signaux et déroutait l'exécution du thread receveur. Le thread receveur avait fait un lock() juste avant d'être dérouté, ce qui provoquait donc un blocage lorsqu'un autre thread voulait enregistrer quelque chose dans le log...
La solution consistait à bloquer les signaux pour tous les threads, sauf un.