Int -> IO () sayString "Below threads are totally blocked on a busy IORef"/atomic-refBelow threads are totally blocked on a busy IORef
readIORef这意味着对IORef的阻塞会影响到调用readIORef的线程之外的其他线程,这
据我所知,对IORef的修改非常快,它们所涉及的只是更新一个thunk指针。我在想,最好开始并行地对IORef上的修改块进行评估,因为在许多情况下,无论如何都必须对它们进行评估(显然,这将打破无限数据结构)。因此,我编写了以下函数,具有类似于atomicModifyIORef的签名
atomicModifyIORefPar :: (NFData a) => IORef a -> (a -> (a, b))我们实际上将force newdata存储到IORef中。这与newdata是一样的,但是显示了我们希