Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Multithreading 当主线程终止时清理子线程_Multithreading_Haskell_Concurrency - Fatal编程技术网

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
异常?我希望能够访问子线程中的异常,以便进行一些清理。