La réentrance, c'est le fait pour un module en cours d'exécution pour un processus P0 d'être appelé par un autre processus P1, sans que P1 soit obligé d'attendre la fin de l'utilisation du module par P0 pour commencer sa propre exécution.
Et la définition est récursive (mais ce n'est pas la récursivité qui est une autre notion) : la réentrance, c'est le fait pour un module en cours d'exécution par plusieurs processus P0, P1, ...Pn , d'être appelée par un autre processus Pn+1, sans que Pn+1 soit obligé d'attendre la fin de l'utilisation du module par P0, P1, ...Pn.
En fait, plus simplement dit, c'est la faculté pour un module d'être exécuté simultanément par plusieurs processus. Par exemple un module appelé par des interruptions.
Certains langages de programmation implémentent automatiquement la réentrance, par exemple ADA. Dans d'autre le C, il faut programmer en détail.
Pour écrire du code réentrant, il faut bannir les variables globales (de tout façon, any time ), passer les paramètres sur la pile et allouer les variables locales sur la pile (comme pour la récursivité) mais en plus on doit constituer une structure de donnée qui contient l'adresse des paramètres et des variables locales pour chacun des processus simultané. Ce doit être une structure dynamique puisque, à priori, on ne connait pas le nombre de processus simultanés qui vont utiliser le module.
Bon, partant de "envoi mails en vietnamien" j''arrive aux prémisses d'un cours de programmation industrielle, quelle dérive. Mike, pardonnes-moi, je ne recommencerai plus (tout au moins jusqu'à la prochaine fois).