miércoles, 25 de noviembre de 2015

Código reentrante



En informática, un programa informático o subrutina se llama re-entrada si puede ser interrumpido en medio de su ejecución y volver a llamarse de forma segura ("re-entrar") antes de que las invocaciones anteriores completen su ejecución. La interrupción puede ser causada por una acción interna como un salto o llamada, o por una acción externa como una interrupción o señal. Una vez que la invocación re-entrante completa, las invocaciones anteriores reanudarán su ejecución de forma correcta.

Este es un ejemplo de un swap() función que no sea reentrante (así como dejar de ser seguro para subprocesos). Como tal, no debería haber sido utilizado en el servicio de interrupción rutina isr():






Ejemplo
int t; void swap(int *x, int *y)
{
t = *x;
*x = *y; // hardware interrupt might invoke isr() here!
*y = t;
} void isr()
{
int x = 1, y = 2;
swap(&x, &y);
}
Fuente:
https://es.wikipedia.org/wiki/Reentrancia_(inform%C3%A1tica)

1 comentario: