Skip to content

Instantly share code, notes, and snippets.

@umidjons
Created September 27, 2016 06:45
Show Gist options
  • Save umidjons/7404ef96dca917d19d8105088c824ed1 to your computer and use it in GitHub Desktop.
Save umidjons/7404ef96dca917d19d8105088c824ed1 to your computer and use it in GitHub Desktop.
Asynchronous programming overview

Асинхронное программирование

  • операция, который результат доступен не сразу же, а через некоторое время
  • а также называют event driven programming

Примеры асинхронных операций:

  • обращение к диску за данными
  • сетевые обращение (БД, веб-сервер, кеш сервер)

Пример - Обращение к БД

  • соединение с сервером БД
  • отправка запроса
  • ожидание ответа
  • чтение ответа

Пример - Удаление контакта с чата

  • соединение с сервером
  • отправка команды
  • ожидание ответа
  • чтение ответа
  • удаление контакта в интерфейсе

Еще какие методы есть?

Отдельный процесс

Следующие программы используют мульти-процессы

  • Apache (mpm_prefork)
  • PostgreSQL
  • PHP FastCGI

Отдельный поток

Следующие программы используют мульти-потоки

  • Apache (mpm_worker)
  • MySQL

Минусы мультипроцессов и потоков:

  • расходуется относительно много ресурсов (память, переключение контекста)
  • не подходит для обработки большого количество одновременных соединений

Плюсы:

  • идеален когда объем вычеслений высок
  • использует все доступные процессоры

Deferred и Promise

Promise vs Deferred

A promise represents a value that is not yet known.

Методы Promise:

  • promise.then(successHandler, failHandler) - во многих модулях
  • Promise.then(successHandler).catch(failHandler)

A deferred represents work that is not yet finished.

Методы Deferred:

  • Deferred.resolve() - called when work is success
  • Deferred.reject() - called when work is failed

Links

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment