2012-11-20 35 views

回答

5

我這是怎麼實現的parallel-execute用於解決部分的練習SICP 3.4,用球拍:

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

我不能保證它具有相同的語義parallel-execute程序在書中定義,但它允許我解決練習。

+0

使用線程等待的目的是什麼? – Mark

+0

@Mark等待',直到所有線程都已完成其作業,然後繼續執行 –

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))