我使用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寄存器的值组成。
最后:线程与进程不同。线程是一个上下文 执行,而一个进程是一堆与之关联的资源 计算。一个进程可以有一个或多个线程。
答案 0 :(得分:2)
延迟意味着“尽快在其他地方做这项工作”。这项工作被列入Redis,可能会在接下来的几毫秒或几小时内执行 - 你不知道。