次のコードを検討してください。
process := [ (Delay forSeconds: 10) wait ]
forkAt: Processor userBackgroundPriority.
process terminate.
process isTerminated. "--> false"
process resume. "process has been suspended but not terminated"
(Delay forSeconds: 10) wait.
process isTerminated "--> true"
ご覧のとおり、プロセスはブロックが評価されるまで(つまり、この場合は10秒後に)終了しません。
プロセスをすぐに終了する方法はありますか?また、ブロックが最初に評価される理由を誰かが知っていますか?
編集: ブロックが評価される理由がわかります。上記のコードの問題は、もちろん、プロセスがアクティブになる前にプロセスを終了しようとすることです。それでも、遅延が期限切れになるのを待ちたくない場合はどうなりますか?