Quelle est la différence entre une continuation (comme dans Smalltalk) et une interruption (comme dans un assembleur)?

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

Question

J'ai du mal à comprendre le concept de Continuations (utilisé dans Seaside avec Smalltalk). Un extrait de Wikipedia dit:

  

"... fait référence à des continuations de première classe, qui sont des constructions qui permettent à un langage de programmation de sauvegarder l'état d'exécution à tout moment et d'y revenir à un moment ultérieur du programme ..."

N’est-ce pas simplement une autre façon d’exprimer ce que ferait un programmeur assembleur lors de la programmation d’une interruption? Ou ai-je complètement raté le point!

Était-ce utile?

La solution

Une continuation peut être vue comme une copie instantanée du processus en cours d'exécution. Capturer une continuation signifie que le processus en cours est copié et mis de côté. Après cela, le code continue de s'exécuter normalement. L'évaluation d'une continuation signifie que le processus en cours est terminé et que le processus copié est repris exactement dans l'état dans lequel il a été capturé. Les suites peuvent généralement être reprises plusieurs fois.

Une interruption ressemble plus à une coroutine, dans laquelle deux threads d'exécution différents (code d'application, gestionnaire d'interruption) s'entrelacent.

Autres conseils

Les suites sont à peu près équivalentes à setjump / longjump en C. Vous pouvez vous attendre à ce que votre contexte soit intact lorsque vous appelez la suite (pile, indicateurs, registres, pointeur d'instruction, etc.) après l'avoir quitté. Il ressemble donc à un appel d’interruption logicielle, sauf que vous n’avez pas à retourner (ou plus précisément, appelez la suite) une fois que le gestionnaire a terminé et que la suite n’est pas implicite.

À certains égards, ils sont similaires. Toutefois, les suites sont appelées par le programme lui-même et les interruptions sont généralement générées par le processeur ou les périphériques de l'ordinateur. En outre, une interruption ressemble davantage à un signal C, elle est simplement appelée puis le contrôle revient au programme. L’interruption est responsable de la sauvegarde de l’état et de sa restauration par la suite.

De plus, il convient de noter que vous pouvez implémenter des suites assez facilement dans l'assembleur.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top