Рубрики
Без рубрики

Почему однопоточный неблокирующий javascript работает лучше, чем многопоточные системы?

Любой стартер node.js энтузиасты бы хоть раз задумались, как может выйти система с одним потоком… Помеченный javascript, node, java.

Любой стартер node.js я бы хотя бы раз задумался над тем, как однопоточная система может работать лучше, чем многопоточная.

И особенно много людей из многопоточной парадигмы, которые оценивают/понимают node.js , скорее было бы трудно понять: почему Node.js (или любая однопоточная неблокирующая система JS) признана лучше, чем многопоточная система (по крайней мере, для обслуживания веб-трафика!)?

Узел. JS не быстрее (это также не означает, что он медленнее), а скорее очень эффективен при обработке одного потока по сравнению с блокирующей многопоточной системой, обрабатывающей свой единственный поток!

Я сделал диаграммы, чтобы объяснить это утверждение аналогиями.

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

Теперь, конечно, можно построить неблокирующую систему поверх блокирующей многопоточной системы (вот что Node.js находится под капотом), но он очень сложный. И вы должны делать это везде, где вам нужен неблокирующий код в вашем приложении или программе.

Экосистема Javascript (например, node js) предоставляет это из коробки в качестве своего синтаксиса. Синтаксис языка JS предоставляет все эти функции там, где это когда-либо необходимо. Более того, как часть его синтаксиса, читатель кода сразу знает, где код блокирует, а где не блокирует.

Блокирующая часть многопоточной системы блокировки делает ее менее эффективной. Заблокированный поток не может быть использован ни для чего другого, пока он ожидает ответа.

В то время как неблокирующая однопоточная система наилучшим образом использует свою однопоточную систему.

И, следовательно, node.js при правильном использовании может превзойти многие многопоточные системы.

Оригинал: “https://dev.to/anuragvohraec/why-single-threaded-non-blocking-javascript-out-performs-better-than-multithreaded-systems-2fpa”