好吧,我正准备放弃这个。
我想保存延续的状态(使用 shift 完成)。但是,需要注意的是,不应执行重置后的代码。考虑由工作线程执行的延续,不应再处理。延续保存在可以恢复的全局延续列表中,之后的所有其他内容都将被忽略且不应执行。
工作线程必须存活(它不能被中止,或者需要启动一个新线程来销毁)。
reset {
shift {
(cont:Unit=>Unit) =>
println(1)
suspend() // how would I implement something like this?
cont()
}
println(3)
}
println(2)
应该产生
1
恢复继续应该会产生
3
2
目前这似乎根本不可能,因为继续仅限于重置的范围。但我想我会给 StackOverflow 一个破解它。
编辑:基本上......(也许我应该早点说)我想调用一个方法,并暂停执行,直到它准备好给我一个结果,我想通过事件循环来实现这一点,而不是线程同步。