LINUX.ORG.RU

История изменений

Исправление qnikst, (текущая версия) :

Скорее всего он имеет ввиду это:

import Control.Concurrent.Async
import Control.Monad
import Data.IORef
main = do
  foo <- newIORef 0
  let worker = replicateM_ 1000 $ modifyIORef foo (+1)
  _ <- concurrently worker worker
  print =<< readIORef foo
qnikst@qwork ~ $ ghc -threaded 1.hs
[1 of 1] Compiling Main             ( 1.hs, 1.o )
Linking 1 ...
qnikst@qwork ~ $ ./1
2000
qnikst@qwork ~ $ ./1 +RTS -N
1328

но объяснять почему это не причина и все в прядке даже не хочется.

Исходная версия qnikst, :

Он имеет ввиду это:

import Control.Concurrent.Async
import Control.Monad
import Data.IORef
main = do
  foo <- newIORef 0
  let worker = replicateM_ 1000 $ modifyIORef foo (+1)
  _ <- concurrently worker worker
  print =<< readIORef foo
qnikst@qwork ~ $ ghc -threaded 1.hs
[1 of 1] Compiling Main             ( 1.hs, 1.o )
Linking 1 ...
qnikst@qwork ~ $ ./1
2000
qnikst@qwork ~ $ ./1 +RTS -N
1328

но объяснять почему это не причина и все в прядке даже не хочется.