首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何正确关闭坡和坡::会话?

如何正确关闭坡和坡::会话?
EN

Stack Overflow用户
提问于 2015-02-18 15:51:59
回答 3查看 495关注 0票数 3

使用POE调用POE::Kernel->stop()会导致立即关闭。一个人如何要求一个优雅的关闭,等待产量,张贴,调用FIFO是空的,然后关闭?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-04-02 19:57:26

什么是建议的方法来结束事件循环等待某些任务,而忽略其他任务?

首先,等待你想要完成的任务。

在它们完成之后,您有几个选项可以在剩余任务完成之前结束事件循环。

一个是打电话给POE::Kernel->stop()。这将停止事件循环,主POE::Kernel->run()调用将返回。通常在那之后没有什么可做的,但是有些程序在那里只做一次最后的工作.

另一种是扼杀这一过程。kill(TERM => $$)。使用将导致操作系统终止进程的信号。不过,这相当严厉。

您可以通过向POE::Kernel->sig()调用注册SIGTERM处理程序来软化打击。这将允许您在SIGTERM到达时运行一些代码,但它再次将关闭所有程序的负担放在程序上。

其他一些苛刻的选项包括exit(),它至少允许DESTROYEND块的对象运行。如果你不希望他们这样做,那么总有POSIX::_exit()。当然还有die()

如果您不想涉及操作系统,那么可以使用POE::Kernel->signal(TERM => $kernel)调用注入一个假的SIGTERM。这实际上就是POE::内核在真正的SIGTERM到达时在幕后所做的事情。

您还可以使用POE::Kernel->signal()向各个会话发送信号。作为一个模拟信号的好处之一是它不一定是整个程序的作用域。

以最-至最低-建议的顺序:

  • 以适当的意图关闭一切。
  • 使用POE::Kernel->signal()杀死特定的顽固性会话。
  • POE::Kernel->stop()
  • exit()及其同类。
票数 1
EN

Stack Overflow用户

发布于 2015-02-27 15:36:53

我不认为这是完全清楚..。

产量,post等将为空,最终您的脚本将关闭。“优雅关闭”是一个概念,例如,您有一个套接字驱动的应用程序,并且您希望在“关闭/关闭套接字”之前确保所有通过套接字完成而产生的活动。

因此,也许解决方案不是POE::内核内部的问题,而是在您自己的代码中?

票数 1
EN

Stack Overflow用户

发布于 2015-03-03 21:47:45

如果创建内联状态以删除别名和任何未处理的警报,则会话应优雅地结束。只有在等待某个事件返回或被另一个会话使用时,它才会保留。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28587833

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档