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
Как вы сказали, это зависит от задачи под рукой:
Очески работа Опираясь на работу в тему ядра - ваша работа всегда будет работать контекст. Они планируются и поэтому могут соснуть.
Обычно нет дебатов между рабочими очередями или Sotftirqs / takeslets; Если отложенная работа должна спать, используются рабочие очереди, в противном случае используются Softirqs или Tasklets. Задачи также более подходят для обработки прерываний (они даны определенные заверения, такие как: Tasklet никогда не проводится позже, чем на следующем тике, он всегда сериализован в отношении самого себя и т. Д.).
Таймеры ядра хороши, когда вы точно знаете, когда вы хотите, чтобы что-то произойдет, и не хотеть прерывать / заблокировать процесс в то же время. Они бегают внешний контекст процесса, и они также асинхронные в отношении другого кода, поэтому они являются источником гоночных условий, если вы не осторожны.
Надеюсь, это поможет.
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