[前][次][番号順一覧][スレッド一覧][生データ]

langsmith:163

From: Yukihiro Matsumoto <matz ruby-lang.org>
Date: Thu, 30 Dec 2004 00:18:05 +0900
Subject: [langsmith:163] Re: continuationの実装について

まつもと ゆきひろです

In message "Re: [langsmith:162] Re: continuationの実装について"
    on Wed, 29 Dec 2004 23:59:46 +0900, Tsuguo MOGAMI <mogami brain.riken.go.jp> writes:

|まずはこれがありました。
|http://i.loveruby.net/ja/rhg/cd/continuation.html
|Rubyでは、VM方式でないけど、スレッドの実装のために、
|実行のコンテキストをセーブできる機能がすでに実装されて
|いたからそれを使ったら簡単にできたということですが、
|私の場合はスレッドは実装されていないので真似はできません。

別にスレッドは必須ではありません。要するに

  * 実行開始時にスタックの開始位置を覚えておく
  * 継続が欲しいタイミングでスタックの開始位置から現在の先頭
    までをヒープにコピー(ここではローカル変数を使ってはいけ
    ない)
  * setjmp(3)を呼ぶ

これだけです。継続の再開は

  * ヒープからスタックに書き戻す
  * longjmp(3)を呼ぶ

手順で行います。継続があればスレッドは自分で実装できます。

|http://members.at.infoseek.co.jp/zzyyb/scm/hack/continuation.html
|これは、よく分からなかった。これもスタックフレームのコピーかな?

scmも上記の手順で継続を実現しているはずです。

--
ML: langsmith quickml.atdot.net
使い方: http://www.atdot.net/~ko1/quickml

[前][次][番号順一覧][スレッド一覧][生データ]

       161 2004-12-29 23:25 [mogami brain.riken.g] continuationの実装について              
       162 2004-12-29 23:59 ┣[mogami brain.riken.g]                                       
->     163 2004-12-30 00:18 ┃┗[matz ruby-lang.org  ]                                     
       164 2004-12-30 08:36 ┗[shiro lava.net      ]                                       
       165 2005-01-06 18:55  ┗[mogami brain.riken.g]                                     
       166 2005-01-08 07:45   ┗[shiro lava.net      ]