4
A
回答
4
在這種情況下,Clojurians使用「時間」和「價值」這兩個詞來表達非常具體的含義,以消除這種歧義。在這種情況下,'時間'是'時間在一個序列中'或劃時代,而不是時間,就像牆上的時間一樣。因此時間描述了該標識的值序列中的哪個值。
價值是一個時間點身份不變的內容。該值可以是簡單的(原始值或原子值)或複合值,並由任意結構的不變值組成。最重要的部分是值不會改變,因此,如果你想知道哪些值使用,你可以簡單地打印或登錄其
我強烈reccommend上values, state and identity
8
的STM Clojure中提供此視頻(通過ref
s和dosync
)一個事務上下文,其中所有更新都保證在與外界查看時涉及的所有參與者「同時」進行。
目標是保持系統中的值的一致性,典型的例子是兩個銀行賬戶之間的資金轉移。如果您將帳戶A的100美元轉帳到帳戶B,則您需要同時更改A和B的金額。
在這個例子中實際上有一個在讀正在交易中處理的數量的值沒有歧義,因爲只有以下幾種情況都可以在瞬間從事務外讀做:
- 交易已經開始但尚未完成,所以價值未被「正式」更改。交易可以稍後提交或重試,但是當您閱讀它們時,這是每個賬戶的狀態。
- 交易已完成,所以讀取的金額是修改後的值。
當交易裏面,您只讀過ref
S(不修改)可以自己的價值,從交易的一個點更改爲其他,這就是所謂的寫歪斜(見Clojure Programming - 第4章,參考,書寫偏斜)。爲了避免這種情況,您可以使用ensure
(而不是deref
),這將導致如果這些ref
中的任何一個值發生更改(您只能讀取的值),那麼整個事務將被重試。
相關問題
- 1. STM和改變clojure
- 2. Clojure STM(dosync)x Java同步塊
- 3. 在Clojure中STM的併發性
- 4. Clojure STM與原子和代理形式有關係嗎?
- 5. Clojure中的因子core.logic
- 6. Clojure STM屬於哪種類型的交易模型?
- 7. Clojure的STM模型可以用於多個JVM嗎?
- 8. 評估STM模式
- 9. Clojure尾數遞歸與素因子
- 10. clojure「官方」併發示例(使用鎖定,原子,stm)可能的改進
- 11. 如何知道模糊的原因?
- 12. INNER JOIN:where子句太模糊
- 13. 可以訪問Clojure的STM的值歷史嗎?
- 14. 這兩個修改和ref-set更新Clojure中的STM樹?
- 15. 如何在Clojure中查看STM中的回滾數量?
- 16. 在Clojure中使用STM的讀者和作者
- 17. 高斯模糊與OpenCV:只模糊圖像的子區域?
- 18. 因子從模板
- 19. 唯一類型取代STM STM
- 20. Java STM:關於Multiverse STM的問題
- 21. Where子句是模糊的笨模型
- 22. 當STM模型收斂時,R崩潰
- 23. STM:從DFM
- 24. Queue Using Deuce STM
- 25. 我在STM上被阻塞的確切原因是什麼?
- 26. 模糊
- 27. Solr和太陽黑子模糊搜索
- 28. 爲什麼我的桌子模糊?
- 29. 模糊python推箱子代碼
- 30. 模糊邏輯的具體例子