Ma compréhension de «fonction réentrante» est que c'est une fonction qui peut être interrompue (par exemple par un ISR ou un appel récursif) et reprise par la suite de sorte que la sortie globale de la fonction ne soit affectée dans aucun manière par l'interruption.Confusion concernant les fonctions réentrantes
Voici un exemple d'une fonction rentrante de Wikipedia https://en.wikipedia.org/wiki/Reentrancy_(computing)
int t;
void swap(int *x, int *y)
{
int s;
s = t; // save global variable
t = *x;
*x = *y;
// hardware interrupt might invoke isr() here!
*y = t;
t = s; // restore global variable
}
void isr()
{
int x = 1, y = 2;
swap(&x, &y);
}
Je pensais, si nous modifions la RSR comme ceci:
void isr()
{
t=0;
}
Et disons donc que le La fonction main appelle la fonction swap, mais soudainement une interruption se produit, alors la sortie serait sûrement déformée car le swap ne serait pas correct, ce qui dans mon esprit rend cette fonction non-réentrante.
Est-ce que ma pensée est bonne ou mauvaise? Y a-t-il une erreur dans ma compréhension de la réentrance?