の署名modifyIORef
は非常に簡単です。
modifyIORef :: IORef a -> (a -> a) -> IO ()
残念ながら、これはスレッドセーフではありません。この問題に対処する代替手段があります。
atomicModifyIORef :: IORef a -> (a -> (a,b)) -> IO b
これら2つの機能の違いは正確には何ですか? 別のスレッドから読み取られる可能性のある をb
変更するときに、パラメーターをどのように使用すればよいですか?IORef