Was ist der Unterschied zwischen einer Fortsetzung (wie in Smalltalk) und ein Interrupt (wie in einem Assembler)?

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

Frage

Ich bin zu kämpfen, das Konzept der Fortsetzungen zu verstehen (wie in Seaside mit Smalltalk verwendet). Ein Ausschnitt aus Wikipedia sagt:

  

„... beziehen sich auf First-Class-Fortsetzungen, die Konstrukte sind, die einer Programmiersprache die Möglichkeit geben, den Ausführungszustand an jedem Punkt zu speichern und zu einem späteren Zeitpunkt in dem Programm zu diesem Punkt zurückkehrt ...“

Ist das nicht einfach eine andere Art und Weise auszudrücken, was ein Assembler-Programmierer tun würde, wenn ein Interrupt-Programmierung? Oder habe ich völlig verfehlt den Punkt!

War es hilfreich?

Lösung

Eine Fortsetzung kann als Snapshot Kopie des laufenden Prozesses gesehen werden. eine Fortsetzung Erfassung bedeutet, dass der aktuelle Prozess wird zur Seite kopiert und setzt. Danach setzt Code normalerweise auszuführen. eine Fortsetzung der Bewertung bedeutet, daß der derzeitige Prozess beendet wird, und der kopierte eine wieder aufgenommen wird in genau dem Zustand, es erfasst wurde. Fortsetzungen können in der Regel mehrmals wieder aufgenommen werden.

Ein Interrupt ist mehr wie ein Koroutine, wo es zwei verschiedene Ausführungs-Threads (Anwendungscode, Interrupt-Handler), die sich gegenseitig verschachteln.

Andere Tipps

Fortsetzungen etwa gleichwertig sind setjump / Weitsprung in C. Sie Ihren Kontext intakt erwarten können, wenn Sie die Fortsetzung aufrufen (Stack, Merker, Register, Befehlszeiger und so weiter), nachdem sie zu verlassen. So ist es ähnlich wie bei einem Software-Interrupt-Aufruf außer Sie (oder genauer gesagt, rufen die Fortsetzung) nicht zurückgeben müssen, nachdem die Behandlungsroutine beendet und die Fortsetzung ist nicht implizit.

In gewisser Hinsicht sind sie ähnlich. Allerdings sind Fortsetzungen durch das Programm selbst, genannt und Interrupts werden in der Regel von der CPU oder Geräte auf dem Computer erzeugt. Außerdem ist ein Interrupt mehr wie ein C-Signal wird gerade angerufen und dann kehrt zum Programm zu steuern. Der Interrupt ist verantwortlich für Zustand Speichern und Wiederherstellen es danach.

Auch ist zu beachten, dass Sie Fortsetzungen ganz einfach in Assembler implementieren können.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top