好吧,我準備放棄這一點。斯卡拉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設置爲不可行/方便。 –