読者です 読者をやめる 読者になる 読者になる

(wat-aro)

無職から有職者にランクアップしました

SICP 問題 3.38

(define balance 100)

;; Peter
(set! balance (+ balance 10))

;; Paul
(set! balance (- balance 20))

;; Mary
(set! balance (- balance (/ balance 2)))

;;a 3つのプロセスがある順序で逐次的に実行された場合のbalanceの取り得る値
;;35,40,45,50

;;b プロセスが混ざり合った場合
;; 参照した後に上書きする前に他のプロセスによって値を上書きされる事がある.
;; そのために実質的に一つのプロセスしか走ってない時や二つのプロセスしか走ってない場合が起き得る
;; 新たに55,80,90,110といった値を取る事がある.
;; 90を取る例