websocket 一个多线程的Julia程序有可能不退出()吗

polhcujo  于 2023-06-23  发布在  其他
关注(0)|答案(1)|浏览(129)

我的应用程序中有一些代码使用了HTTP.WebSockets客户端,并在接收循环中出错。我有一个try catch,它在caught error时调用exit()。但我注意到,虽然客户端确实命中了该分支并停止运行整个程序,但其他线程并没有退出,因为它没有将控制权返回给终端。
exit()是否被WebSocket代码捕获?
还是有其他东西在从不同的线程调用exit()
更新:
经过再三考虑,我认为我应该将异常重新抛出到根级别。退出没有完全退出任务或程序仍然没有意义,但希望这能起作用。

2izufjch

2izufjch1#

将错误重抛到顶部确实有效。如果不希望程序退出,可以创建一个原子标志变量,如

all_ok = Threads.Atomic{Bool}(true)

all_ok[]检查,当你捕获一个错误时,你会在catch例程中用all_ok[] = false标记这个错误。然后,每个工作线程需要定期检查all_ok[]标志,并在它为false时退出。

相关问题