[英]When/why use an MVar over a TVar
我覺得TVar很容易使用,即使MVar看起來更簡單一些,而TVar更有特色。
所以我的問題很簡單,我想要什么條件去MVar而不是TVar? 我想任何時候我都不需要事務更新我可以使用一個MVar,但這對我有什么好處?
無功
TVar
更快 的TVar
IOREF
IO
寫入/更新 TVar
什么時候使用MVar
或TVar
並沒有真正的硬性規則。 如果我正在守衛的資源將“失蹤”(而不是空,請考慮Nothing
vs Just mempty
),那么MVar
通常是最有意義的。 如果我需要對資源執行原子塊修改,那么TVar
是最合適的。
電視更安全但速度更慢。
MVars可以死鎖,但效率更高。
更高效的仍然是IORef
和atomicModifyIORef
(CAS),但是你可以用它來做很多限制。
這實際上是對性能權衡的安全性。 TVars非常通用,非常安全。 其他一切都不那么嚴重,規模越來越小。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.