Open spectrallll opened 8 months ago
Отличное замечание, полностью согласен!
Конкурентность - когда несколько задач стартовали и как-то выполняются в течение общего промежутка времени.
Скажите, а как вы представляете выполнение двух или более промисов в течение общего промежутка времени? То есть, к примеру, делается три запроса к стороннему API, и все они, следуя вашему определению, завершатся ровно-ровно за условные
3.5467
секунд? Или же я что-то неправильно понял?И, в целом, термина «конкурентность», «конкурентное выполнение промисов», в русской литературе по JS не встречал. Возможно, в пример можете привести какую-либо книгу, руководство, документацию с использованием этого термина?
Если термин "конкурентно" вызывает вопросы или вводит вас в заблуждение, то можно заменить его на "асинхронно", потому что термин "параллельно" в корне неверный и вводит читателей в заблуждение об асинхронной модели JavaScript.
То, что промисы работают в асинхронном порядке, — это и так ясно. Какую роль в контексте предложения будет играть асинхронность? Речь совершенно не об этом.
Приветствую, спасибо за ревью. По-первому тейку, это никак не исключает отсутствие параллелизма при асинк рантайме с ивент лупом, это также конкурентное исполнение и ожидаемое поведение, когда при переключении контекста выполнения (await), поток прошелся по ивентлупу и другая сопрограмма (промис), еще не в статусе готово, поэтому поток прыгнет в ту сопрограмму (промис), которая первая будет готова. Второй тейк - не очень понятно, почему нужен источник, привязанный к JavaScript, конкурентное выполнение кода никак не привязано к определенным языкам программирования - это общий термин, если Вы не встречали термин конкуретности относительно JS'а, то где Вы наткнулись на "параллелизм" в JS'е, тем более при рассуждениях об асинк рантайме с ивентлупом?. Третий тейк - меня совершенно удивляет, что Вас правда не смущает "параллелизм" относительно имеющейся модели асинка в джаваскрипт, мы в одном потоке, одном процессе, ивент луп у нас обрабатывается одним потоком, с явным переключением (кооперативная многозадачность), обрабатывается с ОЖИДАЕМЫМ поведением, параллелизм в свою очередь обязательно требует многоядерную среду. Т.к. все факторы исключают наличие любой "параллельности" при таком рантайме - нам обязательно нужно убрать любое упоминание этого термина, иначе это вводит людей в заблуждение.
Описание
В асинхронном рантайме мы имеем один поток один процесс, что исключает любой параллелизм.
Конкурентность - когда несколько задач стартовали и как-то выполняются в течение общего промежутка времени.
Кооперативная многозадачность (модель конкурентного выполнения кода в JavaScript). В асинхронном рантайме мы явно можем сказать какой порядок выполнения кода у нас может быть, благодаря явному переключению потока выполнения с помощью ключевого слова await, что снова собой исключает любой параллелизм.
Термин конкурентное исполнение не говорит о том каким образом эта конкурентность будет получена, например в нашем случае мы переключаем поток выполнения с помощью await.
Если термин "конкурентно" вызывает вопросы или вводит вас в заблуждение, то можно заменить его на "асинхронно", потому что термин "параллельно" в корне неверный и вводит читателей в заблуждение об асинхронной модели JavaScript.
Ссылки
Rob Pike - Concurrency is not Parallelism - https://youtu.be/oV9rvDllKEg?si=DPYT0P5yeFnvgjyq https://en.wikipedia.org/wiki/Concurrency_(computer_science) https://www.baeldung.com/cs/concurrency-vs-parallelism