hig*_*y22 0 haskell asynchronous exception
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"
Run Code Online (Sandbox Code Playgroud)
函数mask_应该忽略异步异常,直到它返回.但"test maskWorker"不会打印"返回".为什么?
| 归档时间: |
|
| 查看次数: |
51 次 |
| 最近记录: |