[英]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.