Комментарии 17
Как-то сумбурно очень. Мне кажется, что те кто хочет начать изучать асинхронное программирование, надо начинать с того, что это, чем отличается. А для тех кто в теме, тому вряд ли этот конкретный (не очень разобранный) пример принесет пользу.
+10
Сперва я хотел рассмотреть уже готовое приложение, но понял, что нужно разбить его на отдельные куски.
Собственно, хочется показать в результате нечто весьма полезное. И это будет сделано, полагаю, уже в следующей статье.
Собственно, хочется показать в результате нечто весьма полезное. И это будет сделано, полагаю, уже в следующей статье.
-5
если готовое приложение будет рассматриваться — то стоит в начале описать к чему хотим прийти в конце статей, а то выдраный кусок не очень понятен по смыслу :)
+3
Мне казалось, что скелет приложения говорит сам за себя :)
В данном случае это транскодер видеофайлов.
Хотя раньше я покажу, думаю, генерацию CSS-спрайтов.
В данном случае это транскодер видеофайлов.
Хотя раньше я покажу, думаю, генерацию CSS-спрайтов.
-5
Если честно, я прочитав статью, даже не понял, что это будет целое приложение.
И скелета я тоже не заметил ))
А уж а транскодере видеофайлов я даже подумать не мог )
И скелета я тоже не заметил ))
А уж а транскодере видеофайлов я даже подумать не мог )
+5
обрадовался, прочитал, расстроился
+11
как то грустно получилось. Надеюсь самая интересная часть транскодера будет описана более радужно и интересно. Для новичка в node.js этот код как азбука младенцу
0
Ай-ай-ай, в Node.JS же другой code style принят? ;)
0
По сути дела: я бы в своё время обратил внимание читателей на nextTick, им удобно разбивать подобные операции на кусочки, выполняющиеся с промежутками в event-loop. Спасёт в случае, если каждый шаг рекурсии долго выполняется и не даст переполнить стек вызовов.
0
А вы всегда пишете Javascript-код в C++ стиле?
0
Гм, асинхронное программирование != использование замыканий.
Путаетесь сами — путаете народ.
Ваше приложение будет выполнятся четко синхронно. Последовательно и единобразно.
Вообще его можно представитить как три очереди — скандиректорий — скан файлов — этот-хренов-транскодер.
Параллельность параллельных задач != асинхроность :)
Давайте лучше запустим сканирование директорий, после чего отработаем некий шаблон «шапки страницы», после чего встанем в слип в ожидании готовности данных и сгенерим выходной поток реально в несколько параллельных задач. И еще в транскодере сделаем проверку на колличество одновременно запущеных инстансов. А то когда их много — будут тупить…
В общем подводя итоги — эффекты паралельности можно добиться
1.системой слотой и сигналов(ивентов в общем)
2.очередями, в том числе множественными. Вообще это называется конвеер
3.простым отсуствием обратной связи у вложености скриптов.
В смысле (в данном случае) так как функция transcode не вызывает никаких телодвижений в функциях ее породивших, как и другие функции примера… это получается конвеер обыкновенный, точнее не асинхронное программирование, а просто распределеное.
Какой пример асинхронности можно привести в каноническом виде?
Win32
ReadFileEx(асихронное чтение) + readcallback(асихнронный колбэк у этого чтения) + WaitForSingleObject(или QueueUserAPC на вызывающий тред) в главном треде.
Путаетесь сами — путаете народ.
Ваше приложение будет выполнятся четко синхронно. Последовательно и единобразно.
Вообще его можно представитить как три очереди — скандиректорий — скан файлов — этот-хренов-транскодер.
Параллельность параллельных задач != асинхроность :)
Давайте лучше запустим сканирование директорий, после чего отработаем некий шаблон «шапки страницы», после чего встанем в слип в ожидании готовности данных и сгенерим выходной поток реально в несколько параллельных задач. И еще в транскодере сделаем проверку на колличество одновременно запущеных инстансов. А то когда их много — будут тупить…
В общем подводя итоги — эффекты паралельности можно добиться
1.системой слотой и сигналов(ивентов в общем)
2.очередями, в том числе множественными. Вообще это называется конвеер
3.простым отсуствием обратной связи у вложености скриптов.
В смысле (в данном случае) так как функция transcode не вызывает никаких телодвижений в функциях ее породивших, как и другие функции примера… это получается конвеер обыкновенный, точнее не асинхронное программирование, а просто распределеное.
Какой пример асинхронности можно привести в каноническом виде?
Win32
ReadFileEx(асихронное чтение) + readcallback(асихнронный колбэк у этого чтения) + WaitForSingleObject(или QueueUserAPC на вызывающий тред) в главном треде.
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Node.JS — Основы асинхронного программирования, часть 1