Multithreading 当主线程终止时清理子线程
我发现自己正试图写这样的东西:Multithreading 当主线程终止时清理子线程,multithreading,haskell,concurrency,Multithreading,Haskell,Concurrency,我发现自己正试图写这样的东西: main = do t1 <- forkIO (forever io) t2 <- forkIO (forever io) forever io `finally` traverse_ killThread [t1,t2] main=do t1刚刚意识到将最终包含在一元代码块中没有问题 main = do t1 <- forkIO (forever io) t2 &
main = do t1 <- forkIO (forever io)
t2 <- forkIO (forever io)
forever io
`finally` traverse_ killThread [t1,t2]
main=do t1刚刚意识到将最终包含在一元代码块中没有问题
main = do t1 <- forkIO (forever io)
t2 <- forkIO (forever io)
forever io `finally` traverse_ killThread [t1,t2]
main=do t1您不需要终止子线程,因为Haskell运行时在主线程终止时终止它们。通常,您在main中编写代码以等待子线程完成,然后再完成自身。我同意您的看法,通常的模式是主线程等待子线程终止。但是,即使它等待,当主线程接收到用户中断时会发生什么呢。运行时如何终止子线程?它是传播用户中断异常还是向他们抛出threadkill
异常?我希望能够访问子线程中的异常,以便进行一些清理。