【发布时间】:2016-09-22 13:25:52
【问题描述】:
modifyIORef 的签名很简单:
modifyIORef :: IORef a -> (a -> a) -> IO ()
不幸的是,这不是线程安全的。有一个替代方案可以解决这个问题:
atomicModifyIORef :: IORef a -> (a -> (a,b)) -> IO b
这两个函数到底有什么区别?在修改可能从另一个线程读取的IORef 时,我应该如何使用b 参数?
【问题讨论】:
标签: haskell concurrency ioref global-state