小编Dan*_*iil的帖子

Data.ByteString.readFile是否阻止所有线程?

我有以下代码:

module Main where
import Data.IORef
import qualified Data.ByteString as S
import Control.Monad
import Control.Concurrent

main :: IO ()
main = do
    var <- newIORef False
    forkIO $ forever $ do
        status <- readIORef var
        if status
            then putStrLn "main: file was read"
            else putStrLn "main: file not yet read"
        threadDelay 10000
    threadDelay 200000
    putStrLn ">>! going to read file"
    --threadDelay 200000    --
    str <- S.readFile "large2"
    putStrLn ">>! finished reading file"
    writeIORef var True
    threadDelay 200000  
Run Code Online (Sandbox Code Playgroud)

我编译代码并像这样运行:

$ ghc …
Run Code Online (Sandbox Code Playgroud)

concurrency multithreading haskell

13
推荐指数
2
解决办法
1058
查看次数

标签 统计

concurrency ×1

haskell ×1

multithreading ×1