IORef
如果我在多个线程之间共享一个,并使用atomicModifyIORef
它来写入:
atomicModifyIORef ref (\_ -> (new, ()))
用普通的 old 读取值是否安全readIORef
?或者修改后是否有机会readIORef
在另一个线程中返回旧值atomicModifyIORef
?
我认为这就是文档所暗示的:
atomicModifyIORef 充当重新排序的障碍。多个 atomicModifyIORef 操作以严格的程序顺序发生。永远不会观察到 atomicModifyIORef 发生在任何更早(按程序顺序)的 IORef 操作之前,或在任何以后的 IORef 操作之后。
我只是想确定一下。