История изменений
Исправление 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
но объяснять почему это не причина и все в прядке даже не хочется.