Peredvizhnikov Engine é um mecanismo de jogo totalmente livre de bloqueios escrito em C++20. Ele implementa o modelo de ator de computação simultânea sobre as primitivas de co-rotina da linguagem.
Usando a abstração do modelo de ator , é possível desenvolver lógica complexa e paralela, estando totalmente isolado dos detalhes da sincronização entre threads. Uma implementação do modelo completamente livre de bloqueios traz consigo muitas vantagens, nomeadamente progresso garantido mesmo na presença de terminação arbitrária de threads, liberdade de deadlock, latência previsível na reação a eventos críticos e tolerância a falhas.
Na verdade, o grau de tolerância a falhas no mecanismo Peredvizhnikov é tão grande que é garantido que o mecanismo continuará funcionando mesmo quando qualquer um dos threads de trabalho for encerrado de forma assíncrona. Você pode verificar isso sozinho.
A implementação é baseada em uma mistura de ideias clássicas e inovadoras em programação sem bloqueios. Inclui uma nova implementação de memória transacional de software, um novo tipo de fila sem bloqueio, uma primitiva de serialização original sem bloqueio, um std::atomic_shared_ptr sem bloqueio, um agendador sem bloqueio, um alocador de memória sem bloqueio, um DAG em tempo de compilação e muito mais!
Para uma análise detalhada de todos os algoritmos livres de bloqueio necessários para a realização do mecanismo, a justificativa para o design, benchmarks e muito mais, dê uma olhada no documento que acompanha: Motor Peredvizhnikov: Projeto e implementação de um agendador completamente livre de bloqueio .
Para facilitar ainda mais o desenvolvimento com design orientado a dados, o Peredvizhnikov Engine implementa um banco de dados na memória que é otimizado para acesso por componentes e suporta grandes conjuntos de dados. Ele é baseado em Flat Hash Map e Bitwise Trie com estruturas de dados Bitmap de alto desempenho.
No momento, a única plataforma suportada é o Linux. Clang++ 16 é necessário para construir os fontes.
git clone https://github.com/eduard-permyakov/peredvizhnikov-engine.git
cd peredvizhnikov-engine
make -j16 DEBUG=0
O código-fonte do Peredvizhnikov Engine está disponível gratuitamente sob a licença GPLv3. No entanto, posso conceder permissão para usar partes ou todo o código sob uma licença diferente, caso a caso. Por favor, pergunte por e-mail.
Você pode entrar em contato comigo com quaisquer perguntas, comentários ou preocupações relativas ao código-fonte ou aos algoritmos subjacentes.
Além disso, estou atualmente procurando emprego ativamente. Não hesite em entrar em contato sobre quaisquer oportunidades adequadas.
Meu e-mail é: [email protected]