Когда использовать потоки ядра и рабочие очереди в ядре Linux

Trying Node-6.4.0 (process.versions.v8 = '5.0.71.60') и Node Chakracore-v7.0.0-pre8, а затем Chrome-52 (V8 = 5.2.361.49), я заметил, что named параметры реализованы почти , но этот порядок все еще имеет приоритет. Я не могу найти то, что говорит стандарт ECMA.

>function f(a=1, b=2){ console.log(`a=${a} + b=${b} = ${a+b}`) }

> f()
a=1 + b=2 = 3
> f(a=5)
a=5 + b=2 = 7
> f(a=7, b=10)
a=7 + b=10 = 17

Но требуется заказ! Является ли это стандартным поведением?

> f(b=10)
a=10 + b=2 = 12
30
задан Jamey Hicks 27 January 2010 в 13:50
поделиться

2 ответа

Как вы сказали, это зависит от задачи под рукой:

Очески работа Опираясь на работу в тему ядра - ваша работа всегда будет работать контекст. Они планируются и поэтому могут соснуть.

Обычно нет дебатов между рабочими очередями или Sotftirqs / takeslets; Если отложенная работа должна спать, используются рабочие очереди, в противном случае используются Softirqs или Tasklets. Задачи также более подходят для обработки прерываний (они даны определенные заверения, такие как: Tasklet никогда не проводится позже, чем на следующем тике, он всегда сериализован в отношении самого себя и т. Д.).

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

Надеюсь, это поможет.

29
ответ дан 27 November 2019 в 23:43
поделиться
softirqs : deferred work runs in interrupt context
tasklets : deferred work runs in interrupt context
work queues : deferred work runs in process context

softirqs : cannot run simultaneously on different CPU's
tasklets : cannot run simultaneously on different CPU's
work queues : can run simultaneously on different CPU's

softirqs : cannot go to sleep
tasklets : cannot go to sleep
work queues : can go to sleep

softirqs : cannot be preempted/schedule
tasklets : cannot be preempted/schedule
work queues : maybe be preempted/schedule

softirqs : not easy to use
tasklets : easy to use
work queues : easy to use
31
ответ дан 27 November 2019 в 23:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: