Peredvizhnikov Engine 是一個用 C++20 寫的完全無鎖的遊戲引擎。它在語言的協程原語之上實現了並發計算的參與者模型。
使用參與者模型抽象,可以開發複雜的平行邏輯,同時完全與執行緒間同步的細節隔離。此模型的完全無鎖實作帶來了許多優點,即即使在任意執行緒終止的情況下也能保證進度、無死鎖、對關鍵事件做出反應的可預測延遲以及容錯。
事實上,Peredvizhnikov 引擎的容錯程度非常高,即使任何工作執行緒被非同步終止,引擎也能保證繼續運作。這個你可以自己驗證一下。
此實現建立在無鎖程式設計中經典和新穎思想的結合之上。它包括軟體事務記憶體的新穎實作、新型無鎖定佇列、原始無鎖序列化原語、無鎖定 std::atomic_shared_ptr、無鎖定調度程式、無鎖定記憶體分配器、編譯時 DAG 等等!
有關實現該引擎的所有無鎖演算法的詳細資訊、設計原理、基準測試等,請查看隨附的文件:Peredvizhnikov 引擎:完全無鎖調度器的設計和實作。
為了進一步促進以資料設計為導向的開發,Peredvizhnikov 引擎實作了一個記憶體資料庫,該資料庫針對元件存取進行了最佳化並支援大型資料集。它建立在高效能平面雜湊圖和具有點陣圖資料結構的位元特里樹之上。
目前,唯一支援的平台是 Linux。建構原始碼需要 Clang++ 16。
git clone https://github.com/eduard-permyakov/peredvizhnikov-engine.git
cd peredvizhnikov-engine
make -j16 DEBUG=0
Peredvizhnikov 引擎的原始碼可根據 GPLv3 許可證免費取得。但是,我可能會根據具體情況授予在不同許可證下使用部分或全部程式碼的權限。請透過電子郵件詢問。
如果您對原始程式碼或底層演算法有任何問題、意見或疑慮,可以與我聯絡。
另外,我目前正在積極尋找工作。請隨時聯繫我們以了解任何合適的機會。
我的電子郵件是:[email protected]