有没有办法在 Perl 中实现非阻塞/异步执行(没有 fork()
'ing)?
我曾经是一名 Python 开发人员多年...... Python 有非常棒的“Twisted”框架,允许这样做(使用 DEFERREDs。当我运行搜索以查看 Perl 中是否有任何东西可以做同样的事情时,我遇到 POE framework - 这似乎与我正在搜索的内容“足够接近”。但是......在花了一些时间阅读文档并“玩”代码之后,我遇到了“墙” - 这是以下限制(来自 POE::Session 文档):
Callbacks are not preemptive. As long as one is running, no others will be dispatched. This is known as cooperative multitasking. Each session must cooperate by returning to the central dispatching kernel.
这种限制实质上破坏了异步/并行/非阻塞执行的目的——通过限制在任何给定时刻仅执行一个回调(代码块)。当另一个回调已经在运行时,没有其他回调可以开始运行!
那么...在 Perl 中是否有任何方法可以在没有
fork()
的情况下实现多任务(并行、非阻塞、异步执行代码)? 'ing - 类似于 DEFERREDs在 Python 中?
最佳答案
关于perl - Perl 中的非阻塞/异步执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8548224/