Peredvizhnikov 엔진은 C++20으로 작성된 완전 잠금 기능이 없는 게임 엔진입니다. 이는 언어의 코루틴 프리미티브 위에 동시 계산의 행위자 모델을 구현합니다.
행위자 모델 추상화를 사용하면 스레드 간 동기화의 세부 사항으로부터 완전히 격리되면서 복잡한 병렬 논리를 개발하는 것이 가능합니다. 모델을 완전히 잠금 없이 구현하면 임의 스레드 종료가 있는 경우에도 진행이 보장되고, 교착 상태가 없으며, 중요한 이벤트에 반응할 때 예측 가능한 대기 시간 및 내결함성이 보장되는 등 많은 이점이 있습니다.
실제로 Peredvizhnikov 엔진의 내결함성 수준은 매우 뛰어나서 작업자 스레드 중 하나가 비동기적으로 종료되더라도 엔진은 계속 실행될 수 있습니다. 이를 직접 확인할 수도 있습니다.
구현은 잠금 없는 프로그래밍의 고전적인 아이디어와 새로운 아이디어의 혼합을 기반으로 합니다. 여기에는 소프트웨어 트랜잭션 메모리의 새로운 구현, 새로운 종류의 잠금 없는 대기열, 원래의 잠금 없는 직렬화 기본 요소, 잠금 없는 std::atomic_shared_ptr, 잠금 없는 스케줄러, 잠금 없는 메모리 할당자, 컴파일 타임 DAG와 그 외 다양한 기능!
엔진을 구현하는 데 사용된 모든 잠금 없는 알고리즘, 설계의 근거, 벤치마크 등에 대한 자세한 분석은 다음 문서를 참조하세요. Peredvizhnikov 엔진: 완전 잠금 없는 스케줄러의 설계 및 구현 .
데이터 지향 설계로 개발을 더욱 촉진하기 위해 Peredvizhnikov 엔진은 구성 요소별 액세스에 최적화되고 대규모 데이터 세트를 지원하는 메모리 내 데이터베이스를 구현합니다. 이는 비트맵 데이터 구조를 갖춘 고성능 Flat Hash Map 및 Bitwise Trie를 기반으로 합니다.
현재 유일하게 지원되는 플랫폼은 Linux입니다. 소스를 빌드하려면 Clang++ 16이 필요합니다.
git clone https://github.com/eduard-permyakov/peredvizhnikov-engine.git
cd peredvizhnikov-engine
make -j16 DEBUG=0
Peredvizhnikov 엔진의 소스 코드는 GPLv3 라이센스에 따라 무료로 사용할 수 있습니다. 그러나 경우에 따라 다른 라이선스에 따라 코드의 일부 또는 전체를 사용하는 권한을 부여할 수 있습니다. 이메일로 문의해 주세요.
소스 코드나 기본 알고리즘과 관련된 질문, 의견 또는 우려 사항이 있는 경우 저에게 연락하실 수 있습니다.
또한, 저는 현재 적극적으로 취업 활동을 하고 있습니다. 적합한 기회가 있으면 주저하지 말고 문의해 주세요.
내 이메일은 [email protected]입니다.