在SICP第3.4節(方案中的串行器)上,有一個稱爲並行執行的過程,在MIT方案中描述但未實現。我想知道有沒有人實際執行過它;如果不是如何開始實施這樣的程序?並行執行方案
http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-23.html#%_sec_3.4.1
在SICP第3.4節(方案中的串行器)上,有一個稱爲並行執行的過程,在MIT方案中描述但未實現。我想知道有沒有人實際執行過它;如果不是如何開始實施這樣的程序?並行執行方案
http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-23.html#%_sec_3.4.1
我這是怎麼實現的parallel-execute
用於解決部分的練習SICP 3.4,用球拍:
(define (parallel-execute . procs)
(map thread-wait
(map (lambda (proc) (thread proc))
procs)))
我不能保證它具有相同的語義parallel-execute
程序在書中定義,但它允許我解決練習。
使用線程等待的目的是什麼? – Mark
@Mark等待',直到所有線程都已完成其作業,然後繼續執行 –
在GNU Guile中,該過程實現爲parallel
。它在那裏被定義爲一種特殊形式,可從(use-modules (ice-9 threads))
獲得。如果你想自己實現它,你可以看看這個模塊的源代碼。
這本書的官方網站提供了一個工具parallel.scm。 打開MIT計劃是這樣的:
mit-scheme -load PATH/parallel.scm
或者把這個
(load "PATH/parallel.scm")
在你的計劃源文件的頭部。
實際上你可以用下面的軟件包加載球拍中所有必要的實現。只需在定義或交互窗口中輸入以及必要的軟件包,並在需要時將相同的註釋包含在定義窗口中:
(require(planet dyoo/sicp-concurrency:1:2/sicp-concurrency))
要實現那個人將在元環通解釋器級別構建它。 –