¿Cuál es la diferencia entre una Continuación (como en Smalltalk) y una interrupción (como en un Ensamblador)?

StackOverflow https://stackoverflow.com/questions/815431

Pregunta

Estoy luchando para entender el concepto de Continuaciones (como se usa en Seaside with Smalltalk). Un fragmento de Wikipedia dice:

  

" ... se refiere a las continuaciones de primera clase, que son construcciones que le dan a un lenguaje de programación la capacidad de guardar el estado de ejecución en cualquier punto y volver a ese punto en un punto posterior del programa ... "

¿No es esto simplemente otra forma de expresar lo que haría un programador de ensambladores al programar una interrupción? ¡O me he perdido completamente el punto!

¿Fue útil?

Solución

Una continuación se puede ver como una copia instantánea del proceso en ejecución. Capturar una continuación significa que el proceso actual se copia y se aparta. Después de eso, el código continúa ejecutándose normalmente. Evaluar una continuación significa que el proceso actual se termina y el que se copia se reanuda exactamente en el estado en que se capturó. Las continuaciones normalmente se pueden reanudar varias veces.

Una interrupción es más parecida a una corrutina, donde hay dos subprocesos de ejecución diferentes (código de aplicación, controlador de interrupciones) que se intercalan entre sí.

Otros consejos

Las continuaciones son aproximadamente equivalentes a setjump / longjump en C. Puede esperar que su contexto esté intacto cuando llame a la continuación (pila, marcas, registros, puntero de instrucción, etc.) después de dejarlo. Por lo tanto, es similar a una llamada de interrupción de software, excepto que no tiene que regresar (o más precisamente, llamar a la continuación) después de que el manejador finalice y la continuación no esté implícita.

De alguna manera son similares. Sin embargo, las continuaciones son llamadas por el propio programa, y ??las interrupciones generalmente son generadas por la CPU o los dispositivos en la computadora. Además, una interrupción es más como una señal C, se llama y luego el control regresa al programa. La interrupción es responsable de guardar el estado y restaurarlo después.

Además, debe tenerse en cuenta que puede implementar continuaciones con bastante facilidad en el ensamblador.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top