Haskell:TVar是如何工作的?
TVar如何运作?从我所看到的,它尝试在收到它们后立即运行所有事务,但是,事务完成使其他当前运行的事务无效,然后必须重新启动.这是TVar的工作原理吗? 如果是这种情况,如果每100ms发生1ms长的事务,这是否意味着需要200ms处理的事务永远不会完成? 解决方法只要两个事务访问不同的TV,它们都可以同时提交而不会相互失效.为了清楚说明事务失效的时候,让我们考虑以下场景: >假设t :: TVar Int初始化为0,并在事务A开始时通过readTVar t读取. 关于Haskell的STM系统的原始论文[1](见第6.5节)回答了你的问题:
[1] Tim Harris,Simon Marlow,Simon Peyton Jones和Maurice Herlihy. ACM 2005年并行编程原理与实践会议(PPoPP’05). (编辑:莱芜站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |