Coder Social home page Coder Social logo

cav71 / peredvizhnikov-engine Goto Github PK

View Code? Open in Web Editor NEW

This project forked from eduard-permyakov/peredvizhnikov-engine

0.0 1.0 0.0 11.68 MB

A fully lock-free game engine written in C++20

License: GNU General Public License v3.0

C++ 98.80% Makefile 1.20%

peredvizhnikov-engine's Introduction

logo

Peredvizhnikov Engine is a fully lock-free game engine written in C++20. It implements the actor model of concurrent computation on top of the language's coroutine primitives.

Using the actor model abstraction, it is possible to develop complex, parallel logic while being wholly isolated from the details of inter-thread synchronization. A completely lock-free implementation of the model brings with it many advantages, namely guaranteed progress even in the presence of arbitrary thread termination, deadlock-freedom, predictable latency in reacting to critical events, and fault-tolerance.

In fact, the degree of fault-tolerance in Peredvizhnikov Engine is so great, that the engine is guaranteed to continue running even when any of the worker threads is asynchronously killed. You may verify this yourself.

The implementation is founded upon a mix of classical and novel ideas in lock-free programming. It includes a novel implementation of Software Transactional Memory, a new kind of lock-free queue, an original lock-free serialization primitive, a lock-free std::atomic_shared_ptr, a lock-free scheduler, a lock-free memory allocator and plenty more!

For a detailed breakdown of all the lock-free algorithms that went into realizing the engine, rationale for the design, benchmarks, and more, please take a look at the accompanying document: Peredvizhnikov Engine: Design and Implementation of a Completely Lock-Free Scheduler.

Building Peredvizhnikov Engine

At the moment, the only supported platform is Linux. Clang++ 16 is required to build the sources.

  1. git clone https://github.com/eduard-permyakov/peredvizhnikov-engine.git
  2. cd peredvizhnikov-engine
  3. make -j16 DEBUG=0

License

The source code of Peredvizhnikov Engine is freely available under the GPLv3 license. However, I may grant permission to use parts or all of the code under a different license on a case-by-case basis. Please inquire by e-mail.

Contact

You may contact me with any questions, comments, or concerns pertaining to the source code or the underlying algorithms.

In addition, I am currently actively seeking employment. Please don't hesitate to reach out regarding any suitable opportunities.

My e-mail is: [email protected]

peredvizhnikov-engine's People

Contributors

eduard-permyakov avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.