日志

STM in Haskell

 来源    2013-07-02    0  
Software Transactional Memory,软件事务内存管理(应该是这么翻译的吧T_T)
类似于数据库的事务,所有的操作都有log,最后验证其他线程是否对数据进行修改,要是有那么就回滚。然后继续来
下面是Haskell提供的STM操作。
atomically :: STM a  -> IO a
 
retry :: STM a
orElse :: STM a -> STM a -> STM a
 
newTVar :: a -> STM (TVar a)
readTVar :: TVar a -> STM a
writeTVar :: TVar a -> a -> STM ()

相关文章
Clojure STM与Haskell STM有什么不同?
问答我试图找到什么之间的Clojure称为STM和什么实现在Haskell作为STM之间的区别.考虑到实际的语言语义差异,我有点困惑,因为Rich Hickey在他的演讲中说,Clojure的STM的实现 ...
Haskell,Channels,STM,-threaded,Message Passing
问答我试图使用channels / STM在Haskell中实现消息传递.也许这是一个糟糕的想法,并且有一种更好的方法来实现/使用Haskell中的消息传递.如果是这种情况,请告诉我;然而,我的任务已经打 ...
haskell – 在STM交叉中使用痕迹是否安全?
问答由于某种原因,我有一个无限期失败的事务,我想在里面使用跟踪指令.例如,要在执行此片段中的事务之前打印MVar的状态: data_out <- atomically $do rtg_state & ...
haskell – 某些TVars具有部分原子性的STM
问答我正在使用STM进行操作,除此之外还使用了TBQueue数据结构并取得了巨大成功.我一直在使用它的有用功能包括根据TVar中的前提条件从中读取,基本上如下: shouldRead <- read ...
haskell – 这可以用STM来完成吗?
问答免责声明:这可以很容易地使用MVar()作为一个简单的互斥.我只是想知道是否可以用STM来完成. 我想做以下事情: >读取一些变量. >根据我刚刚阅读的内容决定执行什么I / O. > ...
haskell – STM是否为现有数据结构提供细粒度锁定?
问答阅读Bartosz Milewski关于STM的精彩blog post,我很高兴看到以下内容: But take into account an important fact: STM is very ...
TChan是否已将其集成到Haskell STM中?
问答如果STM事务失败并重试,是否会重新执行对writeTChan的调用,以便最终进行两次写操作,或者如果事务提交,STM是否只实际执行写操作?即睡眠理发师问题的解决方案是否有效,或者如果第一次在ente ...
haskell – STM monad问题
问答这只是一个假设的场景来说明我的问题.假设它们之间有两个线程和一个TVar共享.在一个线程中,有一个原子块读取电视机,需要10秒钟才能完成.在另一个线程是每秒钟修改TVar的原子块.第一个原子块是否会完 ...
haskell – STM友好列表作为更改日志
问答我需要有关数据结构的建议,以用作原子更改日志. 我正在尝试实现以下算法.有一股传入 更改更新内存映射.在类似Haskell的伪代码中 update :: DataSet -> SomeListO ...
haskell – 使用orElse嵌套的STM事务中的验证
问答This commentary page描述了GHC中STM的许多细节,但我想要澄清几点. 首先,当在父级中访问的变量发生变化时,嵌套事务是否无效? 例如我们在线程A中: takeTMVar a `o ...
什么算法在Clojure,Haskell(和其他语言)中用于STM?
问答据了解,实现软件事务内存有几种不同的算法(这是相当活跃的研究领域). 哪里可以找到哪些不同语言和库中使用的源代码(特别是Clojure和Haskell(GHC))?::Clojure的STM(除了代码 ...
Haskell STM总是存在
问答haskell的stm库中有一个函数,具有以下类型签名: alwaysSucceeds :: STM a -> STM () 根据我在赫克克尔的理解,在STM计算正在执行的时候,有三种方法可以& ...
haskell – STM和传出IO
问答如果我在交易失败的STM内部,并且我作为正常控制流程的一部分重试(没有STM碰撞等--),我可能想要向某人外面指出采取纠正措施的方法. 如果它纯粹是"外向",那么我的STM仍然可以 ...
将随机数生成添加到Haskell中的STM monad
问答我目前正在研究Haskell中的一些事务性内存基准测试,并希望能够在事务中使用随机数.我目前正在使用here中的Random monad / monad变换器.在下面的例子中,我有一个包含整数和一个事 ...
试图理解Haskell STM简单的事情
问答我无法理解STM中原子的概念. 我用一个例子说明 import Control.Concurrent import Control.Concurrent.STM import Control.Mona ...
Haskell:FIFO monad
问答是否有标准(或至少常用)包含FIFO队列的monad?我刚才在一篇论文中读到了this one,我已经使用了几次,但我想停止重新实现轮子(这很有趣,但没有效果).::hackage上有一个漂亮的cor ...
haskell – Threepenny-GUI:Drag’n’Drop – 访问DragData
问答我正在努力在调用on.on.drop时访问被拖动元素的DragData.我有这样的事情: tile <- UI.new # set UI.draggable True # set UI.drag ...
无法使用带有haskell的glade xml文件
问答我不确定我是否应该打个招呼,这是我在这里发表的第一篇文章. 无论如何,我正在关注gtk2hs website的glade教程.代码编译正确,但是当我尝试执行它时,我得到了这个错误. (hellogtk ...
user-interface – 在treeview行上捕获右键单击事件[haskell gtk2hs]
问答我已经彻底搜查了(至少我相信如此),我没有找到任何问题的答案,所以我想请你帮忙. 我正在尝试确定用户何时右键单击我的treeView(用户列表)中的行,然后显示一个弹出窗口,其中包含用于编辑和删除它们 ...