C++ Russia 2018: Иван Пузыревский, Асинхронность в программировании
Краткое содержание доклада Ивана Пузыревского — “Асинхронность в программировании“ с конференции C Russia 2018:
1:35 - Классическая для параллельного программирования программа ping-pong. На ее примере описывается основная терминология (в картинках): поток выполнения, многозадачность, параллелизм; блокировнаие и ожидание.
10:18 - Более эффективная работа с сетью (select/epoll или библиотеки типа libuv, вызывающие callback-и при поступлении данных). За счет их применения код становится асинхронным, т.е. мы в свое приложение забрали логику по обработке событий. Вызовы select/epoll - точки, где мы запрашиваем у операционной системы информацию о наступивших событиях и с их учетом мы решаем над какой задачей нам работать дальше.
12:15 - Механизмы уведомлений:
- Тяни (pull) - очереди. Мы вытягиваем множество наступивших событий, которые мы ждем и реагируем на них. Примеры - сетевые карты (select/epoll), очередь задач.
- Толкай (push)