Die Peredvizhnikov Engine ist eine vollständig sperrenfreie Spiel-Engine, die in C++20 geschrieben wurde. Es implementiert das Akteurmodell der gleichzeitigen Berechnung zusätzlich zu den Coroutine-Primitiven der Sprache.
Mithilfe der Abstraktion des Akteurmodells ist es möglich, komplexe, parallele Logik zu entwickeln und dabei völlig von den Details der Inter-Thread-Synchronisation isoliert zu sein. Eine vollständig sperrenfreie Implementierung des Modells bringt viele Vorteile mit sich, nämlich garantierten Fortschritt auch bei willkürlicher Thread-Beendigung, Deadlock-Freiheit, vorhersehbare Latenz bei der Reaktion auf kritische Ereignisse und Fehlertoleranz.
Tatsächlich ist der Grad der Fehlertoleranz in der Peredvizhnikov-Engine so groß, dass die Engine garantiert weiterläuft, selbst wenn einer der Arbeitsthreads asynchron beendet wird. Sie können dies selbst überprüfen.
Die Implementierung basiert auf einer Mischung aus klassischen und neuartigen Ideen der sperrenfreien Programmierung. Es umfasst eine neuartige Implementierung des Software-Transaktionsspeichers, eine neue Art von sperrenfreier Warteschlange, ein ursprüngliches sperrenfreies Serialisierungsprimitiv, einen sperrenfreien std::atomic_shared_ptr, einen sperrenfreien Scheduler, einen sperrenfreien Speicherzuweiser usw DAG zur Kompilierungszeit und vieles mehr!
Eine detaillierte Aufschlüsselung aller sperrenfreien Algorithmen, die in die Realisierung der Engine eingeflossen sind, die Begründung für das Design, Benchmarks und mehr finden Sie im Begleitdokument: Peredvizhnikov Engine: Design and Implementation of a Completely Lock-Free Scheduler .
Um die Entwicklung mit datenorientiertem Design weiter zu erleichtern, implementiert die Peredvizhnikov Engine eine In-Memory-Datenbank, die für den komponentenweisen Zugriff optimiert ist und große Datensätze unterstützt. Es basiert auf performanter Flat Hash Map und Bitwise Trie mit Bitmap-Datenstrukturen.
Derzeit ist Linux die einzige unterstützte Plattform. Zum Erstellen der Quellen ist Clang++ 16 erforderlich.
git clone https://github.com/eduard-permyakov/peredvizhnikov-engine.git
cd peredvizhnikov-engine
make -j16 DEBUG=0
Der Quellcode der Peredvizhnikov Engine ist unter der GPLv3-Lizenz frei verfügbar. Ich kann jedoch im Einzelfall die Erlaubnis erteilen, Teile oder den gesamten Code unter einer anderen Lizenz zu verwenden. Bitte erkundigen Sie sich per E-Mail.
Sie können mich bei Fragen, Kommentaren oder Bedenken zum Quellcode oder den zugrunde liegenden Algorithmen kontaktieren.
Darüber hinaus bin ich derzeit aktiv auf der Suche nach einer Anstellung. Bitte zögern Sie nicht, uns bezüglich geeigneter Möglichkeiten zu kontaktieren.
Meine E-Mail lautet: [email protected]