Pull to refresh
1
0
Сергей @SergTsumbal

User

Send message

Top-level await в ноде при использование .mjs с 2021 года. И он в стейджах es. Погуглите, много нового узнаете

Ожидание процессор не нагружает)

Уровень у вас не тот чтоб что-то отвечать, это верно. Тут базу надо и матчасть учить, что вам уже многие сказали, и не один раз

Нет, кинуть запрос микросекунды

Ну мало ли, факториалы про запас насчитывает)

Нет конечно, и там нет никакого «выполнения», там ожидание ответа, те же сетевые задержки, что полностью IO, во время ожидания можно выполнить другие задачи, называется неблокирующий асинхронный IO. Поднимать потоки на такое слишком затратно. libuv поднимает пулл на тяжелые синхронные операции, для справки. Легко проверяется оборачиванием любых синхронных функций в Promise.all, нет задержек, нет выигрыша

Так вы не знаете что eventLoop отвечает за выполнение кода? И как следствие javascript однопоточен по природе?

Что специально сделано? Многопоточное программирование в той же ноде зачаточное и не простое, race condition, deadlock, livelock, синхронизация, critical section вам знакомы?

В браузере libuv нет, а javascript есть, вот ведь задачка)

Я бы на вашем меньше «фундаментально» удалил статью, чтобы не быть посмешищем, javascript спокойно может работать на своих нативных объектах, он не обязан иметь libuv. И все языки сценариев являются языками программирования, почему вы постоянно подчеркиваете слово “script”, javascript уже очень давно не просто скриптовый браузерный язык

А eventLoop однопоточный, поэтому параллельность в нем невозможна, только асинхронность

Замеры через new Date весьма наивная штука, в ноде для этого есть perf_hooks, libuv которые пристегнут к v8 и отвечает за io, по дефолту 4 потока использует, только это особенность ноды, а не языка

И? JavaScript вообще не обязан иметь хост-обьекты, чтоб быть JavaScript’ом, движок v8 вообще не привязан даже к eventLoop’у

Только это будет параллельность, а не асинхронность, асинхронность это IO bound задача, а параллельность CPU bound. Вы ходите чтобы люди себе фейспалмами лбы отбивали?)

По умолчанию если не шарить память то не имеют они общую память, а если шарить то приходиться решать проблему с синхронизацией

Параллельное исполнение

Параллельное исполнение (parallel computing) подразумевает наличие более одного вычислительного устройства (например, процессора), которые будут одновременно выполнять несколько задач.

Параллельное исполнение - это строгое подмножество конкурентного исполнения. Это значит, что на компьютере с одним процессором параллельное программирование - невозможно;)

Многопоточность

Многопоточность - это один из способов реализации конкурентного исполнения путем выделения абстракции "рабочего потока" (worker thread).

Потоки "абстрагируют" от пользователя низкоуровневые детали и позволяют выполнять более чем одну работу "параллельно". Операционная система, среда исполнения или библиотека прячет подробности того, будет многопоточное исполнение конкурентным (когда потоков больше чем физических процессоров), или параллельным (когда число потоков меньше или равно числу процессоров и несколько задач физически выполняются одновременно).

Асинхронное исполнение

Асинхронность (asynchrony) подразумевает, что операция может быть выполнена кем-то на стороне: удаленным веб-узлом, сервером или другим устройством за пределами текущего вычислительного устройства.

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

Так же как и хост-объекты не имеют никакого отношения к языку, только нативные, js и без хост-объектов будет js, так что ваш вывод про «многопоточность» js опираясь на хост-объекты мягко говоря не верен

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Date of birth
Registered
Activity

Specialization

Fullstack Developer
JavaScript
Node.js
Web development