継続
Continuation
プログラムを途中で一時停止して、その状態を保持して、後からその続きから動かしたい、というような場合に「継続」という手法が使われる。
(C言語などでループ内の実行場所をループ終端まで進める continue 文のことではない。)
どういう時に継続を使うのか?
通信電文をすべて受け取らないうちに、別の処理をやりたい場合。(受信待ちさせたくない)
「処理の一時停止」がアプリケーションとして必要な場合。
擬似マルチタスクの実現方法の一つとして。
実装方法
外部から一時停止と再開ができるなら、そもそもプログラム側で何も書かなくてもよい。
状態遷移マシンは継続の実装そのもの。
すべての状態を保持したオブジェクトを保持できればよい。
プログラミングの視点からすると、関数呼び出しするか特定の文を実行することで、そこを継続のチェックポイントとすることができる。
プログラム上からは、単に関数で一時停止して、関数から戻ってきたように見える。
状態の保持のための特別な手続きを書く必要性がない。人間の思考方法に合致している。
実際に使われる例
Python の yield 文
参考