gpt4 book ai didi

haskell - 从线程中强制退出程序

转载 作者:行者123 更新时间:2023-12-01 03:34:31 24 4
gpt4 key购买 nike

我使用 error函数来传达一个巨大的程序员错误(有点像 c 断言),我希望程序立即失败并迫使我修复一个明显的错误(而不是标准的运行时异常)。这多年来一直运行良好,但我目前正在开发一个多线程程序,现在它让我失望了。

调用 error在线程中不会退出程序。这是有据可查的,https://hackage.haskell.org/package/base-4.8.2.0/docs/Control-Concurrent.html . System.Exit.die也存在这个问题, Control.Exception.Base.assert , 等等。

我已经看到通过在子线程和主线程之间构建重量级通信方法来绕过该程序的示例,但这对我的目的来说很少实用,原因有很多:

  • 我的线程通常由库创建,例如管道合并源。
  • error经常在库调用中抛出,比如当你调用 head [] 时.
  • 如果我需要通过线程间通信进行路由,那么很容易错过该机制。

  • 有没有办法强制整个程序从一个线程故意崩溃?

    最佳答案

    以下示例在 Windows 上适用于我;我导入并调用外部 C 函数 exit :

    {-# LANGUAGE ForeignFunctionInterface #-}

    module Main where

    import Control.Concurrent

    foreign import ccall "exit" exit :: IO ()

    main = do
    forkIO exit
    threadDelay 1000000
    putStrLn "Main is still running..."

    关于haskell - 从线程中强制退出程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35924265/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com