Peredvizhnikov Engine — полностью свободный от блокировок игровой движок, написанный на C++20. Он реализует актерскую модель параллельных вычислений поверх примитивов сопрограммы языка.
Используя абстракцию модели актера , можно разрабатывать сложную параллельную логику, будучи полностью изолированным от деталей межпоточной синхронизации. Полностью свободная от блокировок реализация модели приносит множество преимуществ, а именно: гарантированный прогресс даже при наличии произвольного завершения потока, отсутствие взаимоблокировок, предсказуемую задержку реакции на критические события и отказоустойчивость.
На самом деле степень отказоустойчивости Peredvizhnikov Engine настолько велика, что движок гарантированно продолжит работу даже в случае асинхронного закрытия любого из рабочих потоков. Вы можете убедиться в этом сами.
Реализация основана на сочетании классических и новых идей программирования без блокировок. Он включает в себя новую реализацию программной транзакционной памяти, новый вид очереди без блокировки, оригинальный примитив сериализации без блокировки, std::atomic_shared_ptr без блокировки, планировщик без блокировки, распределитель памяти без блокировки, DAG во время компиляции и многое другое!
Подробное описание всех алгоритмов без блокировок, использованных при реализации движка, обоснование конструкции, тесты и многое другое, можно найти в сопроводительном документе: Движок передвижников: проектирование и реализация планировщика с полной блокировкой. .
Чтобы еще больше облегчить разработку с помощью ориентированного на данные проектирования, Peredvizhnikov Engine реализует базу данных в памяти, которая оптимизирована для покомпонентного доступа и поддерживает большие наборы данных. Он основан на высокопроизводительной плоской хэш-карте и побитовом древе с растровыми структурами данных.
На данный момент единственной поддерживаемой платформой является Linux. Для сборки исходников требуется Clang++ 16.
git clone https://github.com/eduard-permyakov/peredvizhnikov-engine.git
cd peredvizhnikov-engine
make -j16 DEBUG=0
Исходный код Peredvizhnikov Engine доступен бесплатно по лицензии GPLv3. Однако в каждом конкретном случае я могу предоставить разрешение на использование части или всего кода под другой лицензией. Пожалуйста, задайте вопрос по электронной почте.
Вы можете связаться со мной с любыми вопросами, комментариями или замечаниями, касающимися исходного кода или лежащих в его основе алгоритмов.
Кроме того, сейчас я активно ищу работу. Пожалуйста, не стесняйтесь обращаться к нам по поводу любых подходящих возможностей.
Моя электронная почта: [email protected].