質問

今回展示されていた、というのですか?

ではありませんがCSの度、私の背景にはVB6→ASP->ASP.NET/C#.誰でもできるのでは説明できない、明確かつ簡潔な役職員に周知徹底しているか。

役に立ちましたか?

解決

想像の場合は一線のプログラムのた別の機能です。各受け入れとしてパラメータには、次の機能を実行できます。

このモデルを用いるとき"一時停止"処刑ラインを続けておくことが出来ます。することができまし歩いように一時的にホップの実行スタックを取得する値、または保存の現在の実行状態データベースを取得する。

他のヒント

おそらくその内容を理解した上でよいという思いを大切にしていました。

例外の一例として、"上限"continuations.このコードの深い部分のスタックから呼び出する例外ハンドラを示すことが問題である。

Python例:

try:
    broken_function()
except SomeException:
    # jump to here
    pass

def broken_function():
    raise SomeException() # go back up the stack
    # stuff that won't be evaluated

ジェネレータは、例の"下限"continuations.このコードを再度入力ループは、例えば、新しい価値を創造します。

Python例:

def sequence_generator(i=1):
    while True:
        yield i  # "return" this value, and come back here for the next
        i = i + 1

g = sequence_generator()
while True:
    print g.next()

両方の場合、これらたに追加する言語には言語とcontinuationsのプログラマーを作成できれない可能です。

Aヘッドは、この例ではない簡潔なものと非常に明確です。このデモの強力な応用continuations.としてVB/ASP/C#プログラマは、どのようなコンセプトにシステムのスタックに保存状態、これらの答えは実証ではありません。

Continuationsは非常に汎用性を保存し実行状態を再開します。ここでは例の協力multithreading環境continuationsにスキーム:

(このような業務enqueueとdequeueとして期待されるグローバルキュー定義されていない。

(define (fork)
  (display "forking\n")
  (call-with-current-continuation
   (lambda (cc)
     (enqueue (lambda ()
                (cc #f)))
     (cc #t))))

(define (context-switch)
  (display "context switching\n")
  (call-with-current-continuation
   (lambda (cc)
     (enqueue
      (lambda ()
        (cc 'nothing)))
     ((dequeue)))))

(define (end-process)
  (display "ending process\n")
  (let ((proc (dequeue)))
    (if (eq? proc 'queue-empty)
        (display "all processes terminated\n")
        (proc))))

この三つの動詞が使用でき-フォーク、コンテキストスイッチ、最終工程です。のフォークの運用フォークのスレッドを返しますフロストブルンズダレンバレーワインスタンス#fです。のコンテキストのスイッチ操作スイッチとスレッドが、最終工程が終了します。

以下に例を示しますその用途:

(define (test-cs)
  (display "entering test\n")
  (cond
    ((fork) (cond
              ((fork) (display "process 1\n")
                      (context-switch)
                      (display "process 1 again\n"))
              (else (display "process 2\n")
                    (end-process)
                    (display "you shouldn't see this (2)"))))
    (else (cond ((fork) (display "process 3\n")
                        (display "process 3 again\n")
                        (context-switch))
                (else (display "process 4\n")))))
  (context-switch)
  (display "ending process\n")
  (end-process)
  (display "process ended (should only see this once)\n"))

の出力

entering test
forking
forking
process 1
context switching
forking
process 3
process 3 again
context switching
process 2
ending process
process 1 again
context switching
process 4
context switching
context switching
ending process
ending process
ending process
ending process
ending process
ending process
all processes terminated
process ended (should only see this once)

その研究分岐およびスレッドクラスへの展開が行われたことから例と同様です。このポストであることを証明するためにとcontinuationsで表現できる同様の結果内の単一のスレッドによる保存-復元状態-その継続になります。

P.S. って思うことにLispがん専門のコードを確認しておきましょうのです。

うに思うかもしれないが継続してプロセッサスタックです。とき"電話と電流の継続c"で電話機能"c"のパラメータに渡される"c"は現在スタックとすべての自動変数で表されるとしても機能、通話で"k").また、プロセッサの開始オフをスタックです。を呼び出すときは"k"で実行"から返型"(RTS)の指導の元スタック、ジャンプでのコンテキストのオリジナルの"電話と電流の継続"("電話-cc"これからをプログラムを継続しています。ま渡されたパラメータは、"k"この返却値の型に"byte[]"を指定の"cc".

の視点からのオリジナルのスタックは、"電話-cc"のような正常に機能する。の視点からの"c"オリジナルのスタックのような機能がなに戻ります。

あの古いぶ数学者の方を捉えたライオケージをよじ登ったり、ケージ、レンズチューブ、ロックでは、自らが宣言する外側のケージ中の他のすべてを含むライオンたることを確認できます。Continuationsは、サンフランシスコ、ケージ、レンズチューブ、"c"はこのファミリー向けの数学者.本プログラムを考えること"c"の中で、"c"と考えてお本プログラムは"k".

までの任意の流れの制御を用いた構造物continuations.のためのインスタンスを作成できるスレッド図書館があります。"量"を利用して電話-cc"の現在の継続キュー、そしてジャンプを一つのヘッドのキューに挿入しますセマフォは、独自のキューの停止continuations、スレッドは振替でのセマフォキュー及び本キューに挿入します

基本的には、続きを行う機能停止を実行、そしてその奥で開かれている後ます。クライアントまで、フルのC#、これを実行する事ができます。利回りにキーワードとなります。できるさらに詳細をご希望の場合は、がんの簡潔な説明をします。;-)

まだの"使用"をcontinuationsが、一方を考えると見を有して抽象化プログラムのカウンター(PC)コンセプト。PCポイントは、次の命令を実行し、メモリ、もちろん、その指導(毎年、建国記念の指導については、暗黙的または明示的に指示がどう指導すべきサービスの割り込みを行う.も大きな負荷指示が暗黙的にはジャンプの次に指導します。がの場合に割り込みが発生し、そんなわ跳びその他の指導ます。)

各潜在的に"ライブ"ポイントプログラムメモリによる制御がジャンプでは任意の地点で、ある意味で活動を続など。その他の点に到達することができる可能性がある活continuationsものでcontinuationsる"計算"(ダイナミックなどの結果に到達であり、現在のアクティブcontinuations.

このように見えるビットの伝統的な紹介continuations、すべての保留中のスレッドの実行が明示的に表現しcontinuationsへの静的コードそのことは、汎用コンピュータは、PCへの指示順も変える可能性がある内容のメモリを表す部分のことを指示順序とは本質的に新規作成(変更の場合)継続のが存在していませんの賦活のcontinuationsより前に作成/修正。

で継続き高いレベルのモデルのパソコンではなぜで概念的にはsubsumes通常の呼び出し-返却って古代の鉄かった呼び出し-返却により低レベルのジャンプ、通称後藤、プラス記録のメンバーがコミュニケーションを呼び戻しを返して例外を除き、スレッド、coroutines。

そして、PCのポイント計算にそうな"未来"の継続にも同じことが行われてい、より高い、-課題への取り組みが可能になる。PCの暗黙のうちにはメモリをプラスすべてのメモリ位置登録"行き"にな価値を継続を表す、将来の言語が適切に抽象化.

もちろん、ありがされることが一般的であるだけでPCたコンピューター(コア-プロセッサがあり、多くの"アクティブ"PC-ish法として言及する。そのため、割り込みベクターを含むバンチ、スタックを束により、一部のレジスタにあるものが含まれている。その"活性"がその価値を読み込みハードウェアのPCがcontinuationsは抽象化をコンセプトに、なPcまたはその精度が同等であるが固有のコンセプトに"修士"の継続もしく考え、コードそこをいうシンプルなものにな).

本質的に継続さを表現した"、"もう次のメソッドを呼び出"をモットーに、あなたができ、言語や継続-通風のプログラムが多い、あるいは第一級のオブジェクトのインスタンスが生成され、渡され、廃棄されようにもその他のデータ型になり、など、クラシックコンピュータで扱いメモリの場所 vis-a-vis PCとほぼ互換性のための通常の整数です。

クライアントまで、フルのC#へのアクセス権を持っている二つのcontinuations.一、を通じてアクセス return, きる方法から引き続きで呼び出されます。のその他を通じてアクセス throw, きる方法で、最寄りのマッチング catch.

一部の言語だけで扱うこととして初のクラスの値であり、指定することができて、伝えていく頃にの変数.つけることはしないということで赤の値 return または throw 呼び出したとき 本当に 準備を返しまたはthrow.

Continuation callback = return;
callMeLater(callback);

このときのお手軽に多くを実現しました。一例では非表示にすることが可能で、上のような、一時停止する働いているのか、履歴書で何かあった時などがユーザーのウェブリクエスト、または何か).

私も使っていてカップルでの事業の仕事をしています。一つが、私が使っているそうで停止するプログラムをお待ちしていIOのネットワーク再開しておくことが出来ます。その他、私は書くプログラミング言語で、ユーザーへのアクセスcontinuationsとして、価値観できるよう書 returnthrow 自らまたはその他の制御フローのように、 while ループ-もしくは必要となります。

思いのスレッド)。スレッドで実行できることができまの計算である。続きるスレッドで、複写することができますので走行でき、同じ計算ます。

Continuationsたアとウェブプログラミングがいくミラーの一時停止/再開の文字をウェブです。サーバを構築することが可能continautionを表すユーザーセッションを再開した場合にユーザーを続けます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top