En informatique, la réentrance est la propriété pour un morceau de programme d'être utilisé simultanément par plusieurs tâches utilisatrices. La réentrance permet d'éviter la duplication en mémoire vive d'un programme utilisé simultanément par plusieurs utilisateurs.
L'écriture de code réentrant était autrefois une tâche très ardue. Elle s'est simplifiée avec les langages actuels qui autorisent :
Le noyau d'un système d'exploitation comporte souvent des parties non-réentrantes afin d'éviter des complications fâcheuses (incohérence de données critiques, perte de performances). L'écriture de modules destinés à être exécutés dans l'espace noyau reste, pour cette raison, délicate.
La réentrance des programmes n'est pas forcement garantie par tous les langages de programmation. Ainsi, par exemple, un code écrit en Ada sera toujours réentrant alors qu'un code écrit en C ne l'est pas par défaut. La non-réentrance d'un code n'est pas problématique dans le cas de la programmation mono-tâches, mais peut produire des résultats désastreux en programmation concurrente.