函数mask_被异步异常中断
问题描述:
import Control.Exception
import System.Timeout
import Control.Concurrent
maskWorker :: IO()
maskWorker = mask_ $ do
threadDelay 10000
putStrLn $ "Return"
uninterruptWorker :: IO()
uninterruptWorker = uninterruptibleMask_ $ do
threadDelay 10000
putStrLn $ "Return"
test :: IO() -> IO()
test worker = do
pid <- forkIO worker
threadDelay 5000
throwTo pid UserInterrupt
threadDelay 15000
putStrLn "The end"
函数mask_应该忽略异步异常直到它返回。但“测试maskWorker”不打印“返回”。为什么?函数mask_被异步异常中断
以下操作保证不可中断:除了throwTo ...以外的所有Control.Exception – highfly22