如何在Perl中安排任务?

时间:2009-12-09 01:01:53

标签: perl scheduled-tasks

有谁知道perl是否支持任务调度程序?

我正在开发一个控制一堆perl脚本的c#程序。 perl 脚本通过套接字接口与某些设备通信。设备,“目标” ,是一种需要实时交互的嵌入式系统设备。

我需要满足的一个要求是,当我收到消息“A”时 从设备中,我需要安排一个将在15毫秒内发生的事件 在将来。此事件将向UT发送消息。我们在这里称它为“B”。 延迟功能在这里不起作用,因为不应该阻止其他消息 消息“B”。有时,我还需要每15毫秒发送一条消息“B”。

或者说Perl在这里不是一个好选择。

由于

2 个答案:

答案 0 :(得分:13)

Perl有几种事件驱动的非阻塞框架。他们中的任何一个都应该能够做你需要的。以下是三个让您入门的示例:POEAnyEventIO::Async。也就是说,如果你的时间限制是严格的(“每次15毫秒”),那么像C这样的低级语言的实时预定程序可能更合适。

答案 1 :(得分:0)

使用正确的工具做正确的事。我强烈建议你不要使用Perl来完成这类任务。如果您使用Erlang执行此任务,您将只使用纯Erlang(只是语言核心,而不是任何模块/库):

receive
  {Device, "A"} -> spawn(fun() -> send_interval(15, UT, "B") end)
end

send_interval(Interval, Dest, Msg) ->
  receive after Interval ->
      send_interval(Interval, Dest, Dest ! Msg)
  end.

或使用计时器模块

receive
  {Device, "A"} -> timer:send_interval(15, UT, "B")
end

在Perl中可以实现的程度更可靠,更简单。这是我在Perl每天专业开发七年后可以推荐给你的。