C++ and other lectures
9.61K subscribers
50 photos
3 files
273 links
Учебный канал в Телеграм: тут будут анонсы и ссылки на лекции и стримы.

Написать автору: @Tilir

Boosty автора: https://boosty.to/cpp_lects_rus
Download Telegram
В этом июле где то в 10-х числах у меня есть шанс побывать на Дальнем Востоке (Владивосток, возможно Находка). Просьба местных обозначиться в чате или у меня в лс и сказать (1) есть ли заинтересованность, (2) когда и где лучше устроить встречу с читателями и (3) можете ли вы помочь с организацией.

#author_event
🔥405👍1
Выложил лекцию по std::execution на английском языке. Это последняя, 28-я лекция англоязычного магистерского курса.

https://youtu.be/ZMcUTZppCAw

Финальная лекция магистерского курса по C++ посвящена std::execution -- новой модели исполнения, которая входит в C++26. Мы начнём с давно известных механизмов: параллельных алгоритмов стандартной библиотеки, ручного запуска потоков и std::async. На примере параллельного reduce посмотрим, почему этих средств быстро становится недостаточно, если хочется не просто запустить несколько потоков, но также аккуратно описывать и комбинировать вычисления. После этого перейдём к senders/receivers: разберём, что такое scheduler, sender, receiver и operation state, как работают адапторы и как вычисление может переходить между разными execution resources. Свяжем эту тему с миром GPGPU через bulk-вычисления, посмотрим на рекурсивное порождение асинхронных задач через execution scopes и обсудим разные варианты завершения вычислений. В конце поговорим о связи std::execution с корутинами, отмене задач через environment и ещё раз соберём общую картину: как C++26 предлагает описывать асинхронное и параллельное исполнение без ручного управления потоками.

Timeline
00:00 Введение. Параллельные алгоритмы в стандартной библиотеке.
03:30 Пишем собственный параллельный reduce.
10:05 std::async и его особенности. Замеры производительности.
16:50 Единая абстракция исполнения. Основы std::execution в C++26.
26:59 Концепт sender и адапторы.
35:00 Монадическая природа вычислений и let_value.
40:16 Адаптор bulk: снова заходим в мир GPGPU.
46:05 Параллельный reduce с использованием std::execution.
49:40 Execution scopes: динамическое создание задач. Параллельная сортировка.
54:41 Каналы в sender. Поведение upon_error и upon_stopped. Сигнатуры завершения.
01:02:19 Проверка completion signatures: упражнение в метапрограммировании и рефлексии.
01:06:50 Связь сендеров с корутинами: execution::task.
01:14:40 Снова многопоточная подписка и отмена задач.
01:18:47 Основные концепции ещё раз, список литературы и завершение.

#cpp_postgraduate
34🔥32👍14😢1
Выложил лекцию по проблеме рекламации памяти, прочитанную в институте iSpring город Йошкар-Ола (на русском языке).

Youtube:
https://youtu.be/13b5hHwRvVk

Rutube:
https://rutube.ru/video/596ab835ce4cbb1ef4154bc43da58397/

Большое спасибо Алексею Малову (кстати у него есть канал https://youtube.com/@vividbw) и институту iSpring за приглашение, съёмку и монтаж видео.

00:00 Начало. Пример, который мы будем использовать всю лекцию.
03:56 Потоки и гонка за данные.
09:35 Mutex или простота хуже воровства.
12:12 RAII обёртки над mutex.
19:23 Мьютекс это очередь. Концепция read/write lock.
25:51 Сеттинг который мы будем использовать в лекции и первые замеры.
29:14 Убираем в целом блокировки. CAS-циклы.
34:45 Happens before, барьеры и модели памяти.
42:50 Проблема рекламации.
47:30 Атомарный разделяемый указатель и новые замеры.
52:05 C++26: решение проблемы рекламации в стиле RCU и ещё замеры.
01:01:35 C++26: решение проблемы рекламации через Hazard Pointers и ещё замеры.
01:07:55 Список литературы и вопросы.
34👍29🔥7