我對Clojure和LISP一般都很陌生,所以如果這個問題聽起來有點愚蠢,請事先諒解。我最近用MVC方式在Java中創建了一個基於回合的視頻遊戲,並且有一個線程負責圖形循環(因此,以固定的速率更新屏幕上圖形實體的幾何狀態),以及第二個線程負責處理遊戲的邏輯狀態;它的作用非常像守護進程:在後臺「休眠」,除非被要求做某些事情(精心設計的用戶輸入),然後向圖形線程傳遞「更改日誌」,以便它可以呈現對邏輯狀態所做的更改。所以遊戲世界根本就沒有「共享」:只有邏輯線程才能訪問它,而圖形線程的唯一職責是在初始化階段之後將變更應用於渲染,並且從邏輯線程到達新的更改日誌。在這種情況下,我應該如何處理Clojure中的可變狀態?
我讀到Clojure有變數,參考和原子。在這種情況下,我應該使用哪一個身份來將我的遊戲世界狀態存儲在Clojure的邏輯線程中?
看看這篇文章,其中國家hais維護在clojure多線程生產者消費者流量http://stackoverflow.com/questions/8925371/clojure-producer-consumer –