我正在努力理解Continuations的概念(在Seaside with Smalltalk中使用)。维基百科的一个片段说:

  

" ...指的是第一类延续,它是一种结构,它使编程语言能够在任何时刻保存执行状态并在程序的稍后时刻返回到该点......“

这不是表达汇编程序员编程中断时会做什么的另一种方式吗?或者我完全错过了这一点!

有帮助吗?

解决方案

可以将延续视为正在运行的进程的快照副本。捕获延续意味着复制当前进程并将其放在一边。之后,代码继续正常执行。评估延续意味着当前进程终止,并且复制的进程在完全捕获的状态下恢复。连续性通常可以多次恢复。

中断更像是一个协程,其中有两个不同的执行线程(应用程序代码,中断处理程序)相互交错。

其他提示

Continuations大致相当于C中的setjump / longjump。当你在离开它之后调用continuation(堆栈,标志,寄存器,指令指针等)时,你可以期望你的上下文是完整的。所以它类似于软件中断调用,除了你不必在处理程序完成后返回(或更准确地说,调用continuation)并且延迟不是隐式的。

在某些方面,它们是相似的。但是,延续由程序本身调用,而中断通常由CPU或计算机上的设备生成。此外,中断更像是C信号,它只是被调用然后控制返回到程序。中断负责保存状态并在之后恢复它。

此外,应该注意的是,您可以在汇编程序中轻松实现continuation。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top