gpt4 book ai didi

python - Twisted 多线程,信号处理

转载 作者:行者123 更新时间:2023-11-28 16:42:39 25 4
gpt4 key购买 nike

我写了一个扭曲的程序来处理来自 TCP 套接字和原始套接字的请求。由于 twisted 不支持原始线程,我在名为“raw_socket_loop”的函数中编写了原始套接字选择轮询循环。主 react 器程序通过 reactor.callInThread() 函数创建一个单独的线程来运行这个循环。

我的问题是,我在控制台中单击了 control-C,但 react 器无法停止。我认为 react 器的主线程接收到这个信号并处理得很好,但生成的线程没有接收到这个中断信号。多线程reactor程序是否有优雅关闭建议?

非常感谢,

最佳答案

线程不可中断。您必须在线程中运行的代码中构建一种机制,以接收关闭通知并响应它退出。

如果您在线程中使用select(2),那么您可以使用self-pipe trick (这就是 Twisted 自身为满足自己的线程控制需求而执行此操作的方式)。

但是,如果您在线程中使用 select(2),那么也许您应该考虑使用线程,而是实现 IFileDescriptor并将其与 react 器的 IReactorFDSet 一起使用实现以获得就绪事件。这样你就避免了线程,你让 react 器实际实现了事件循环,你仍然得到你的原始套接字。

关于python - Twisted 多线程,信号处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17287775/

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