好吧,我准备放弃这一点。斯卡拉Continuations:暂停没有等待/睡眠()
我想保存一个延续的状态(用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一个裂缝。
编辑:基本上......(也许我应该把这个更早)我想调用一个方法,并暂停执行,直到它准备给我一个结果,我想了一个实现这一偶数循环,而不是线程同步。
嗯,我认为这是不可能的这种方式,但什么是延长复位范围的问题吗?你知道cpsParam注释,它允许使用shift内部方法,它根本没有重置,所以当调用这个方法出现在一些重置内部时,它会工作在预期的方式吗?你也可以使用嵌套重置。 – aemxdp
我可以扩展重置范围,但在重置期间写入的代码将由第三方完成,因此我无法控制代码,并且将@cpsParam设置为不可行/方便。 –