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). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- ScheduledExecutorService任务定时代码示例
- java – 我可以使用hibernate本机SQL查询删除表
- 浅谈java 字符串,字符数组,list间的转化
- 多线程Python脚本比非线程脚本花费更长时间
- java – 如何在Android上设置HttpPut的主体? (不添加库)
- java – 列表中这两个同步用法之间的行为有何不同?
- ‘javax.xml.ws.Endpoint’和2种SSL方式
- java – 使用ehcache集群的hibernate缓存:nonstrict对严格
- Java秒杀系统实战系列~整合Shiro实现用户登录认证
- Android 共享参数 SharedPreferences