2016-04-07 2 views
0

Я использую sidekiq, и я только что прочитал эту документацию:Как долго длится #delay в библиотеке delayed_job в Rails?

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 должен выполнить поток инструкций.

Предположим, что вы читаете книгу, и вы хотите сделать перерыв прямо сейчас, , но вы хотите, чтобы вы могли вернуться и возобновить чтение с точного пункта, где вы остановились. Один из способов добиться этого - записать номер страницы, номер строки и номер слова. Итак, ваше исполнение контекст для чтения книги - эти 3 номера.

Если у вас есть сосед по комнате, и она использует ту же технику, она может взять книгу, пока вы ее не используете, и возобновите чтение, откуда она остановилась. Затем вы можете забрать его и возобновить с того места, где вы были .

Нитки работают таким же образом. CPU дает вам иллюзию, что выполняет несколько вычислений одновременно. Он делает это на , проводя немного времени на каждом вычислении. Он может это сделать, потому что у есть контекст выполнения для каждого вычисления. Так же, как вы можете поделиться книгой со своим другом, многие задачи могут совместно использовать процессор.

На более техническом уровне контекст выполнения (поэтому поток) состоит из значений регистров процессора.

Последнее: нити отличаются от процессов. Поток является контекстом выполнения , тогда как процесс представляет собой совокупность ресурсов, связанных с вычислением . Процесс может иметь один или несколько потоков.

ответ

2

Задержка означает «сделайте эту работу как можно скорее в другом месте». Задание завершено в Redis и может быть выполнено в следующую миллисекунду или через несколько часов - вы не знаете.