相关疑难解决方法(0)

加速Haskell并发

MVar,TVar,IORef,...我无法加快一个thunk问题(我想).

(我原来的问题是一个线程代码,我做"forkIO"n次调用"addMany";但我认为我的问题是"shW"函数)

让下一个代码:

{-# LANGUAGE BangPatterns #-}
import Control.Concurrent
import Control.Monad
import System.Environment(getArgs)
import Data.Int
import Data.IORef

-- "i" times, add "n" for each IORef (in "a")
addMany :: [IORef Int64] -> Int64 -> Int64 -> IO ()
addMany !a !n !i =
  forM_ [1..i] (\_ ->
    forM_ a (shW n))

-- MVar, TVar, IORef, ... read/write (x' = x + k)
shR = readIORef
shW !k !r = atomicModifyIORef r (\ !x' -> (x' + k, ()))

main = …
Run Code Online (Sandbox Code Playgroud)

memory concurrency haskell lazy-evaluation

8
推荐指数
1
解决办法
583
查看次数

标签 统计

concurrency ×1

haskell ×1

lazy-evaluation ×1

memory ×1