我有多个“线程”,它们使用
注:所有这些都在
forkIO
运行。我需要处理互相访问的问题,典型的关键部分/锁定,因为它们将共享公共的Map
:一些线程将修改它,另一些线程将读取它。在Haskell中,使用forkIO
创建线程的关键部分是什么:API、模块、库?注:所有这些都在
Scotty
下工作。
Map
不需要与其他共享状态保持同步时,atomicModifyIORef'
是另一个选择。 - dfeueratomicModifyIORef mref $ \m -> case lookup k m of Nothing -> (insert k v m, Nothing); r -> (m, r)
。 - dfeuerIO
来填补缺失的键,这种情况下最好的选择可能是使用MVar
和modifyMVar
。 - dfeuer