在Rails的delayed_job库中#delay持续多长时间?

时间:2016-04-07 23:05:00

标签: multithreading sidekiq

我使用sidekiq,我只是阅读了这个文档:

ActiveRecord

Use delay, delay_for(interval), or delay_until(time) to asynchronously execute arbitrary methods on your ActiveRecord classes.

User.delay.delete_old_users('some', 'params')
User.delay_for(2.weeks).whatever
User.delay_until(2.weeks.from_now).whatever

标准延迟持续多长时间?或者它只是立即在另一个线程中启动一个作业?

你会说这是一个准确的线程定义:

  

执行线程是编程的最小序列   可以由调度程序独立管理的指令   通常是操作系统的一部分......

更好:

  

线程是执行上下文,它是CPU的所有信息   需要执行一系列指令。

     

假设你正在读一本书,而你现在想休息一下,   但是你希望能够回来并从完全恢复阅读   你停下来的地方。实现这一目标的一种方法是记下来   页码,行号和单词编号。所以你的执行   阅读书籍的背景是这三个数字。

     

如果你有一个室友,并且她使用相同的技术,她可以   在你不使用它的同时拿走这本书,并从那里继续阅读   她停了下来。然后你可以把它拿回来,然后从你那里恢复   是

     

线程以相同的方式工作。 CPU正在给你一种错觉   它同时进行多次计算。它做到了   在每次计算上花一点时间。它可以做到这一点,因为它   具有每个计算的执行上下文。就像你可以分享一样   与你的朋友一本书,许多任务可以共享一个CPU。

     

在更技术层面上,执行上下文(因此是一个线程)   由CPU寄存器的值组成。

     

最后:线程与进程不同。线程是一个上下文   执行,而一个进程是一堆与之关联的资源   计算。一个进程可以有一个或多个线程。

1 个答案:

答案 0 :(得分:2)

延迟意味着“尽快在其他地方做这项工作”。这项工作被列入Redis,可能会在接下来的几毫秒或几小时内执行 - 你不知道。