2012-11-20 4 views
5

でパラレル実行を実装します。通貨のSICPセクション3.4(スキーマのシリアライザ)では、パラレル実行と呼ばれるMITスキームでは実装されていないプロシージャがあります。誰かが実際にそれを実装しているのだろうかと思います。そのような手続きを実行するにはどうすればよいでしょうか?は、スキーム

http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-23.html#%_sec_3.4.1

+0

これを実装するには、メタ円形インタープリタレベルで構築します。 –

答えて

5

これは私がラケットを使用して、SICPのセクション3.4の演習を解決するためのparallel-executeを実装する方法である:

(define (parallel-execute . procs) 
    (map thread-wait 
     (map (lambda (proc) (thread proc)) 
      procs))) 

私はそれがparallel-execute手順と同じ意味を持っていることを保証することはできません本の中で定義されていますが、私は演習を解決することができました。

+0

thread-waitを使用する目的は何ですか? – Mark

+0

実行を続ける前にすべてのスレッドがジョブを終了するまで@マークを待つ –

1

GNU Guileでは、手順はparallelとして実装されています。特別な書式として定義されており、(use-modules (ice-9 threads))から入手できます。自分で実装したい場合は、このモジュールのソースコードを見てください。

3

この本の中身を閲覧する:parallel.scmこの本は、それぞれの上記のテーマに含まれています。このような オープンMITスキーム:

mit-scheme -load PATH/parallel.scm 

かは、あなたのスキームのソースファイルの先頭にこの

(load "PATH/parallel.scm") 

を置きます。

1

実際には、必要なすべての実装を以下のパッケージでラケットで読み込むことができます。これを定義ウィンドウまたはインタラクションウィンドウに入力するだけで、必要なパッケージがインストールされ、必要に応じて、定義ウィンドウに同じコメントを入力します。

(require(planet dyoo/sicp-concurrency:1:2/sicp-concurrency))