gpt4 book ai didi

ruby - sleep() 对于作业调度应用程序的主循环来说是个好主意吗

转载 作者:数据小太阳 更新时间:2023-10-29 06:51:55 25 4
gpt4 key购买 nike

我正在为我的工作用 Ruby 编写一个作业调度应用程序(主要是为了以给定的频率使用各种协议(protocol)移动文件)

我的主循环是这样的:

while true do
# some code to launch the proper job
sleep CONFIG["interval"]
end

它的工作就像一个魅力,但我不确定它是否足够安全,因为该应用程序可能在运行 cpu 密集型软件的服务器上运行。

是否有另一种方法可以做同样的事情,或者 sleep() 对我来说是否足够安全?

最佳答案

每当我觉得需要阻塞时,我都会使用事件循环;通常是 libev。这是一个 Ruby 绑定(bind):

http://rev.rubyforge.org/rdoc/

基本上,sleep 如果您希望您的进程进入休眠状态而无需在后台进行任何其他操作,则完全可以。但是,如果您想要做其他事情,例如 sleep 并等待 TCP 连接或文件句柄变得可读,那么您将不得不使用事件循环。那么,为什么不在一开始就使用一个呢?

您的申请流程将是:

main {
Timer->new( after => 0, every => 60 seconds, run => { <do your work> } )
loop();
}

当您想做其他事情时,您只需创建观察者,它就会自动发生。 (您正在运行的作业也可以创建观察者。)

关于ruby - sleep() 对于作业调度应用程序的主循环来说是个好主意吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1179301/

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