@oop_ru

Страница 772 из 785
Arky
09.10.2018
10:16:44
Yury
09.10.2018
10:16:55
Пидорас
09.10.2018
10:17:36
Yury
09.10.2018
10:17:50
Кст возможно я ошибаюсь и это только в node.js

Google
Yury
09.10.2018
10:18:07
В node.js такое есть, можно вставить событие в самом конце.

Пидорас
09.10.2018
10:18:35
Anton
09.10.2018
10:18:47
Можешь привести пример, где это происходит не последовательно?
я не JS девелопер. мб лучше в JS чате и спроси. а еще нужно смотреть спецификацию.

Пидорас
09.10.2018
10:19:03
Это не непоследовательное выполнение цикла

я не JS девелопер. мб лучше в JS чате и спроси. а еще нужно смотреть спецификацию.
Ты же сказал что зависит от реализации. Значит наверное видел реализации, выполняющие код не последовательно. Сошлись на них

Если не видел, дай хотя бы ссылку на чат JS девелоперов

Yury
09.10.2018
10:20:27
Это не непоследовательное выполнение цикла
Что ты понимаешь под "непоследовательно"?

Пидорас
09.10.2018
10:21:27
Что ты понимаешь под "непоследовательно"?
Когда события из массива [1,2,3] могут выполниться в порядке отличном от 1,2,3

Anton
09.10.2018
10:21:48
и да, я могу тебе на коленке собрать свой ивент луп и сделать так чтобы там по дереву какому-нибудь ивенты исполнялись

Пидорас
09.10.2018
10:22:09
ну ты же понимаешь что Event Loop есть не только в JS
Да. Приведи пример реализации Event Loop, где события в цикле выполняются непоследовательно

Shmaltorhbooks
09.10.2018
10:22:25
An event loop has one or more task queues.

Anton
09.10.2018
10:22:29
Встречный вопрос. Где ты хочешь это использовать?

Google
Shmaltorhbooks
09.10.2018
10:22:29
Говорят, что очередь

если очередь - последовательно

Yury
09.10.2018
10:23:01
Можно параллельно обрабатывать. Event loop не всегда однопоточный.

Shmaltorhbooks
09.10.2018
10:23:04
https://html.spec.whatwg.org/multipage/webappapis.html#event-loops

если очередь - последовательно
но если очередей несколько - вряд ли кто-то будет гарантировать их синхронизацию

Пидорас
09.10.2018
10:23:41
https://nodejs.org/en/docs/guides/blocking-vs-non-blocking/
У меня страница не загружается. Но судя по ссылке, там просто речь о блокирующих операциях

Shmaltorhbooks
09.10.2018
10:24:24
но это о коллбэках

Yury
09.10.2018
10:24:49
У меня страница не загружается. Но судя по ссылке, там просто речь о блокирующих операциях
Вот пример: Сервер обрабатывает события от клиента. Поток получает их и распределяет обработку по тредам. Выходит параллельная обработка событий, четкой последовательности нет.

Shmaltorhbooks
09.10.2018
10:25:33


Пидорас
09.10.2018
10:25:40
Мой вопрос о однопоточной реализации

Гипертрединг, это совсем другой вопрос

Артур Евгеньевич
09.10.2018
10:26:12


Пидорас
09.10.2018
10:26:16
Он выходит за рамки вопроса о асинхронности, не говоря уже о цикле событий

Я только что прочитал перевод https://medium.com/devschacht/event-loop-timers-and-nexttick-18579cd122e0

Anton
09.10.2018
10:27:56
Пидорас так зачем тебе это?

Пидорас
09.10.2018
10:28:30
Пидорас так зачем тебе это?
Что бы понять какие преимущества предоставляет асинхронность

Google
Anton
09.10.2018
10:28:40
мы тебе накидали всяких ссылок. Из твоих сообщений я могу понять, что тебе нужно точно узнать выполняется ли он последовательно или нет. причем точность нужна прям 100%

Yury
09.10.2018
10:28:46
Мой вопрос о однопоточной реализации
Я думаю в таком случае это вряд ли кому-то понадобиться. Такая ситуация где сначала handler для 1 события, затем для 2 события и затем снова для 1.

Anton
09.10.2018
10:29:00
Что бы понять какие преимущества предоставляет асинхронность
так асинхронность -- это не об последовательном или не последовательном исполнении задач в event loop

Пидорас
09.10.2018
10:29:57
На сколько я понял, она позволяет обрабатывать больше запросов, за еденицу времени. Например пока ожидается ответ от БД, можно приступить к обработке другого запроса

Anton
09.10.2018
10:30:10
смысл асинхронности, что ты говоришь ивент лупу, вот задачу которую я хочу выполнить, и вот функция куда нужно передать результат работы. и все. дальше работает ивент лууп и когда он закончит задачу, он тебе передаст результат в твою функцию и там дальше по кругу.

т.е. с такими вопросами тебе нужно читать по ссылке что я дал на сайт мозиллы. если не можешь на английском есть на русском https://developer.mozilla.org/ru/docs/Web/JavaScript/EventLoop

Anton
09.10.2018
10:31:50
так же почитай в гугле parallel vs concurecny

Yury
09.10.2018
10:32:02
Параллелизма как раз в JS нет. Такое может запутать.

Пидорас
09.10.2018
10:32:36
Но так как ты не привел доказательств существования реализаций с непоследовательным исполнением очереди в Event Loop, будем считать что их не существует

Yury
09.10.2018
10:32:42
JS однопоточный. В том числе nodeJS (без модуля cluster)
Я понимаю, я привел пример непоследовательной обработки событий, который может быть в однопоточной системе

Aleh
09.10.2018
10:32:45
Что бы понять какие преимущества предоставляет асинхронность
Максимальная утилизация времени процессора

Пидорас
09.10.2018
10:33:26
Параллелизма как раз в JS нет. Такое может запутать.
Ты это мне? Я вообще такого слова (параллелизм) не упомянул ни разу

Yury
09.10.2018
10:33:33
Но так как ты не привел доказательств существования реализаций с непоследовательным исполнением очереди в Event Loop, будем считать что их не существует
Те если я тебе ее создам, это будет считаться за доказательство?)) Просто вряд ли такое поведение кому то нужно.

Пидорас
09.10.2018
10:34:54
Те если я тебе ее создам, это будет считаться за доказательство?)) Просто вряд ли такое поведение кому то нужно.
Да, это будет доказательством. Я бы посмотрел на то, как задача разбитая на части будет фрагментироваться из-за не последовательного исполнения частей

То есть тебе нужно сначала получить ответ от БД, а потом срендерить страницу, на основе данных. А ты берешь и сначала данные пытаешься рендерить, а потом получаешь ответ от БД, зачем-то

Anton
09.10.2018
10:36:55
я так понимаю ты не понял именно концепции асинхронного программирования

Google
Anton
09.10.2018
10:37:07
т.е. тут вопрос совсем неправильно ставится

Пидорас
09.10.2018
10:37:25
Максимальная утилизация времени процессора
Я так и понял. Но не могу понять вот чего. Как достигается максимальная загрузка процессора, если код в цикле событий в итоге все равно исполняется последовательно?

Anton
09.10.2018
10:38:04
это грубо

но суть именно в этом

Пидорас
09.10.2018
10:38:09
Вот ход моих размышлений: # Как работает асинхронность? Асинхронность реализуется через цикл событий. Когда программа запускается, она: - Инициализирует цикл событий - Обрабатывает исходный код, который может взаимодействовать с API цикла событий - Переходит к обработке цикла событий # Значит в однопоточном цикле событий команды снова исполняются последовательно? Теоретически, это может доказать JS код: setTimeout(()=>{ console.log('Timeout 1'); var start = (new Date).getTime(); while (((new Date).getTime() - start) < 1000) { console.log('Flood from timeout 1'); } }, 0); setTimeout(()=>{ console.log('Timeout 2'); }, 0); var start = (new Date).getTime(); while(((new Date).getTime() - start) < 1000) { console.log('Flood'); } console.log('End'); Здесь последовательность сообщений будет такая: Flood, End, Timeout 1, Flood from timeout 1, Timeout 2 Если код в event loop исполняется последовательно, то моё представление о том, что асинхронный код предназначен для более рационального использования времени (пока ждём ответа от БД - можно заняться чем-то более полезным) ошибочно.

Shmaltorhbooks
09.10.2018
10:39:25
Event loop исполняет события последовательно, но события в лупе появляются в негарантированном порядке

Пока у тебя io не ответило - event loop не будет ждать и простаивать, а выполнит то, что в нём уже лежит

Aleh
09.10.2018
10:40:32
const users = await Promise.all([fetchFromDb(), fetchFromApi()]) Вот последовательный однопоточный код, который параллельно вытянет данные из двух источников

Yury
09.10.2018
10:40:33
Вот ход моих размышлений: # Как работает асинхронность? Асинхронность реализуется через цикл событий. Когда программа запускается, она: - Инициализирует цикл событий - Обрабатывает исходный код, который может взаимодействовать с API цикла событий - Переходит к обработке цикла событий # Значит в однопоточном цикле событий команды снова исполняются последовательно? Теоретически, это может доказать JS код: setTimeout(()=>{ console.log('Timeout 1'); var start = (new Date).getTime(); while (((new Date).getTime() - start) < 1000) { console.log('Flood from timeout 1'); } }, 0); setTimeout(()=>{ console.log('Timeout 2'); }, 0); var start = (new Date).getTime(); while(((new Date).getTime() - start) < 1000) { console.log('Flood'); } console.log('End'); Здесь последовательность сообщений будет такая: Flood, End, Timeout 1, Flood from timeout 1, Timeout 2 Если код в event loop исполняется последовательно, то моё представление о том, что асинхронный код предназначен для более рационального использования времени (пока ждём ответа от БД - можно заняться чем-то более полезным) ошибочно.
Тебе нужно прочитать про IO. Как оно работает. Мы отправили запрос к другому серверу. Мы можем либо заблокироваться и ждать пока он ответит, либо продолжить делать что-то еще, а когда сервер нам ответит обработать это.

Anton
09.10.2018
10:40:47
Вот ход моих размышлений: # Как работает асинхронность? Асинхронность реализуется через цикл событий. Когда программа запускается, она: - Инициализирует цикл событий - Обрабатывает исходный код, который может взаимодействовать с API цикла событий - Переходит к обработке цикла событий # Значит в однопоточном цикле событий команды снова исполняются последовательно? Теоретически, это может доказать JS код: setTimeout(()=>{ console.log('Timeout 1'); var start = (new Date).getTime(); while (((new Date).getTime() - start) < 1000) { console.log('Flood from timeout 1'); } }, 0); setTimeout(()=>{ console.log('Timeout 2'); }, 0); var start = (new Date).getTime(); while(((new Date).getTime() - start) < 1000) { console.log('Flood'); } console.log('End'); Здесь последовательность сообщений будет такая: Flood, End, Timeout 1, Flood from timeout 1, Timeout 2 Если код в event loop исполняется последовательно, то моё представление о том, что асинхронный код предназначен для более рационального использования времени (пока ждём ответа от БД - можно заняться чем-то более полезным) ошибочно.
в твоем примере ты пользуешься таймером. а ты попробуй вызывать какие-нибудь сайты. через fetch и увидишь разницу

Пидорас
09.10.2018
10:46:10
А причем последовательность к заниманию процессора?
Допустим есть такой код: Парсинг запроса Получить данные от БД Рендер страницы При асинхронном подходе, каждое следующее действие является коллбеком предыдущего, например. Изначально исполняется задача "Парсинг запроса". Помещается в цикл событий, так как весь код исполнен, начинается исполнение из цикла событий. Сейчас там всего 1 задача, она и исполняется и цикл пополняется следующей задачей "Получить данные от БД". Теперь выполняется эта задача и цикл пополняется следующей. "Рендер страницы". После выполнения этой задачи цикл будет ожидать новых задач. Сейчас я описал асинхронный подход выполнения задачи, но с блокирующей функцией. Это подход курильщика. Как выглядит получение данных у здорового человека? Кто отвечает за вызов коллбэка, после выполнения второй задачи?

Herman
09.10.2018
10:47:32
Допустим есть такой код: Парсинг запроса Получить данные от БД Рендер страницы При асинхронном подходе, каждое следующее действие является коллбеком предыдущего, например. Изначально исполняется задача "Парсинг запроса". Помещается в цикл событий, так как весь код исполнен, начинается исполнение из цикла событий. Сейчас там всего 1 задача, она и исполняется и цикл пополняется следующей задачей "Получить данные от БД". Теперь выполняется эта задача и цикл пополняется следующей. "Рендер страницы". После выполнения этой задачи цикл будет ожидать новых задач. Сейчас я описал асинхронный подход выполнения задачи, но с блокирующей функцией. Это подход курильщика. Как выглядит получение данных у здорового человека? Кто отвечает за вызов коллбэка, после выполнения второй задачи?
Прикол в том что пока ты ждешь ответа от БД ты можешь обработать еще один http запрос и отправить запрос в бд... в том же процессе.

Anton
09.10.2018
10:48:05
Помойму all не гарантирует последовательное выполнение промисов.
да что ты привезался к последовательности. суть же не в этом

Herman
09.10.2018
10:48:41
На одном запросе разницы между одним воркером fpm и одним процессом nodejs вообще не будет.

Google
Пидорас
09.10.2018
10:48:41
да что ты привезался к последовательности. суть же не в этом
Что значит не в этом? Асинхронность о том, что бы за еденицу времени выполнить как можно больше задач

Bohdan
09.10.2018
10:49:32
асинхронность - это про блокирующие и неблокирующие процессы

Shmaltorhbooks
09.10.2018
10:49:46
Помойму all не гарантирует последовательное выполнение промисов.
Последовательное тут не выполнение промисов, а вычисление содержимого массива

Пидорас
09.10.2018
10:50:05
На одном запросе разницы между одним воркером fpm и одним процессом nodejs вообще не будет.
Не знаю о чем ты говоришь. Но наверное о том, что нет разницы синхронно или асинхронно выполнить такой сапрос из примера. Если ты об этом, то это так

Herman
09.10.2018
10:50:54
Последовательно и асинхронно это как сравнивать теплое с мягким

В nodejs код выполняется последовательно и асинхронно, например.

Anton
09.10.2018
10:51:20
Пидорас вопрос. Что ты знаешь о архитектуре компьютера? О процессоре, о его прерываниях, о переферийных устройствах?

Пидорас
09.10.2018
10:51:51
Последовательно и асинхронно это как сравнивать теплое с мягким
Тебе ни о чем не говорит само название "асинхронность"? "Не синхронно/Не последовательно"

Пидорас
09.10.2018
10:52:27
Кури матчасть
Соси хуй. Идешь в игнор

Bohdan
09.10.2018
10:53:08
идешь в РО учиться общаться с людьми

Shmaltorhbooks
09.10.2018
10:53:14
Нормально же общались

Herman
09.10.2018
10:53:21
Жесть

Anton
09.10.2018
10:53:23
Знаю. А к чему этот вопрос?
к тому, что зная такие вещи. ты понимаешь смысл работы операций ввода-вывода. Поэтому читай книги и статьи об этом. https://docs.microsoft.com/en-gb/windows/desktop/FileIO/synchronous-and-asynchronous-i-o и да ему нужен РО

Yury
09.10.2018
10:53:29
Го бан его

Bohdan
09.10.2018
10:53:51
РО до пятницы

Anton
09.10.2018
10:54:34
скорее всего он уже получил такие же РО в других чатах

ибо очень страннго с такими вопросами заходить в чат по Software Design

Страница 772 из 785