Как стать автором
Обновить

Комментарии 17

Как-то сумбурно очень. Мне кажется, что те кто хочет начать изучать асинхронное программирование, надо начинать с того, что это, чем отличается. А для тех кто в теме, тому вряд ли этот конкретный (не очень разобранный) пример принесет пользу.
Сперва я хотел рассмотреть уже готовое приложение, но понял, что нужно разбить его на отдельные куски.

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

В данном случае это транскодер видеофайлов.

Хотя раньше я покажу, думаю, генерацию CSS-спрайтов.
Если честно, я прочитав статью, даже не понял, что это будет целое приложение.
И скелета я тоже не заметил ))
А уж а транскодере видеофайлов я даже подумать не мог )
mkdir_p -> getFile -> transcode -> sendRemoveFile ?)
да прошу прощения, но на названия я не очень обратил внимание, вникая в суть самого примера. Все таки вставить вступительную речь, о том что рассказано будет на примере приложения такого и вот первая задача из него мне кажется стоит.
обрадовался, прочитал, расстроился
Угу, прочитав название и первое предложение, подумал, что хоть несколько слов будет сказано о том, что такое Node.js, какие задачи решает и чем лучше/хуже конкурентов, ну хоть ссылку на такую статью и прмеры простейших приложений
Имхо, об этом уже много написано, в том числе и на Хабре.
как то грустно получилось. Надеюсь самая интересная часть транскодера будет описана более радужно и интересно. Для новичка в node.js этот код как азбука младенцу
Ай-ай-ай, в Node.JS же другой code style принят? ;)
По сути дела: я бы в своё время обратил внимание читателей на nextTick, им удобно разбивать подобные операции на кусочки, выполняющиеся с промежутками в event-loop. Спасёт в случае, если каждый шаг рекурсии долго выполняется и не даст переполнить стек вызовов.
До этого ещё несколько статей, если интерес будет )

Чуть позже напишу о работе с двумя потоками асинхронных операций одновременно, а затем первое реальное приложение.
А вы всегда пишете Javascript-код в C++ стиле?
Зависит от проекта.

Если проект ни от кого не зависит, пишу в том стиле, который мне больше нравится (вернее, к которому больше привык).
Гм, асинхронное программирование != использование замыканий.

Путаетесь сами — путаете народ.
Ваше приложение будет выполнятся четко синхронно. Последовательно и единобразно.
Вообще его можно представитить как три очереди — скандиректорий — скан файлов — этот-хренов-транскодер.
Параллельность параллельных задач != асинхроность :)

Давайте лучше запустим сканирование директорий, после чего отработаем некий шаблон «шапки страницы», после чего встанем в слип в ожидании готовности данных и сгенерим выходной поток реально в несколько параллельных задач. И еще в транскодере сделаем проверку на колличество одновременно запущеных инстансов. А то когда их много — будут тупить…

В общем подводя итоги — эффекты паралельности можно добиться
1.системой слотой и сигналов(ивентов в общем)
2.очередями, в том числе множественными. Вообще это называется конвеер
3.простым отсуствием обратной связи у вложености скриптов.
В смысле (в данном случае) так как функция transcode не вызывает никаких телодвижений в функциях ее породивших, как и другие функции примера… это получается конвеер обыкновенный, точнее не асинхронное программирование, а просто распределеное.

Какой пример асинхронности можно привести в каноническом виде?
Win32
ReadFileEx(асихронное чтение) + readcallback(асихнронный колбэк у этого чтения) + WaitForSingleObject(или QueueUserAPC на вызывающий тред) в главном треде.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории