perl - 有没有办法在 Perl 中托管进程(即实际有效的线程替换)?

标签 perl multithreading fork signals

我在 perl 中有一个多线程应用程序,我必须依赖几个非线程安全模块,所以我一直在使用 fork()使用 kill() 编辑进程信号作为消息传递接口(interface)。

问题是信号处理程序有点不稳定(至少可以这么说),并且通常最终会导致进程在不适当的状态下被杀死。

有一个更好的方法吗?

最佳答案

根据您的程序需要做什么,您可以考虑使用 POE ,这是一个用于具有用户空间线程的多线程应用程序的 Perl 框架。它很复杂,但优雅而强大,可以通过将事件限制在单个 Perl 解释器线程中来帮助您避免使用非线程安全模块。

有用的入门资源:

  • Programming POE Matt Sergeant 的演讲(从这里开始了解它是什么和做什么)
  • POE project page (大量食谱示例)

  • 另外还有数百个预建的POE components您可以使用它来组装成一个应用程序。

    关于perl - 有没有办法在 Perl 中托管进程(即实际有效的线程替换)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/138696/

    相关文章:

    perl - perl 表达式 $a = $a++ 中是否有任何副作用?

    c++ - 为 C++ 应用程序启用核心转储(通过 apache -> Perl -> C++ 调用)

    java - 我可以通过不可变对象(immutable对象)使此类线程安全吗?

    android - 使用 Espresso 的异步 UI 单元测试,IdlingResource 因竞争条件而失败

    java - 关于servlet的线程安全

    perl - 使用 xml 模块时对 "pseudo-hashes are deprecated"进行故障排除

    database - 我可以将多线程与 Perl 的 DBI 和 Oracle 一起使用吗?

    c - 由主母管控制的多叉

    c++ - 多个 fork 进程无限循环

    c - 使用 fork() 执行 if/else if/else