В настоящем репозитории код не тестировался, определённо содержит ошибки и не предназначен для использования, но пишется для улучшения и отработки автором знания языка C++, а также служит демонстрацией применения этого знания
Репозиторий находится в активной разработке (WIP), поэтому структура и содержимое могут со временем изменяться. Наиболее интересный с точки зрения применения возможностей языка C++ код можно найти здесь
Учебный фреймворк для написания многопоточных масштабируемых concurrency приложений, созданный на основе выполнения заданий из курса "Теория и практика многопоточной синхронизации" за авторством Романа Липовского, MIPT
Написан с использованием C++26
- runtime - среда исполнения
- schedulers - управление задачами
- inline - выполняет задачи на месте
- blocking static threadpool
- fast work-stealing threadpool
- strand - сериализует асинхронные задачи без блокировки
- manual loop - ручной запуск задач
- timers - управление таймерами
- schedulers - управление задачами
- fiber
- API & implementation
- synchronization primitives
- future support
- (go) channels for fiber - имплементация каналов из языка go
- (functional) future - фьючи в функциональном стиле
- constructors - создают фьючи
- combinators - преобразуют одни фьючи в другие
- seq - последовательные комбинаторы
- par - параллельные комбинаторы
- terminators - поглощают фьючи
- (Wip) lazy future - ленивые фьючи (осуществляют выделение памяти и синхронизацию потоков лишь при необходимости)
- C++26
- clang++-21/libstdc++
- x86-64/sysv/elf
- Linux
Для отключения отладочных проверок внутри фреймворка необходимо передать флаг
-DUTIL_DISABLE_DEBUG
- concurrency - библиотека средств синхронизации потоков
- context - контекст исполнения для stackful корутин/файберов
- util - std-like библиотека общих утилит
В настоящем репозитории код лицензирован под GNU General Public License v3.0. Дополнительная информация доступна по адресу https://www.gnu.org/licenses/