Peredvizhnikov Engine เป็นเอ็นจิ้นเกมที่ไม่มีการล็อคโดยสมบูรณ์ซึ่งเขียนด้วยภาษา C ++ 20 มันใช้ แบบจำลองนักแสดง ของการคำนวณพร้อมกันที่ด้านบนของภาษาดั้งเดิมของโครูทีน
การใช้นามธรรมของ โมเดลนักแสดง เป็นไปได้ที่จะพัฒนาตรรกะที่ซับซ้อนและขนานกัน ในขณะที่ถูกแยกออกจากรายละเอียดของการซิงโครไนซ์ระหว่างเธรดทั้งหมด การใช้งานโมเดลโดยปราศจากการล็อกโดยสมบูรณ์นำมาซึ่งข้อดีหลายประการ กล่าวคือ รับประกันความก้าวหน้าแม้ในกรณีที่มีการยุติเธรดโดยพลการ ไม่มีภาวะหยุดชะงัก เวลาแฝงที่คาดการณ์ได้ในการตอบสนองต่อเหตุการณ์สำคัญ และความทนทานต่อข้อผิดพลาด
ในความเป็นจริง ระดับของความทนทานต่อข้อผิดพลาดใน Peredvizhnikov Engine นั้นยอดเยี่ยมมาก จนรับประกันว่าเครื่องยนต์จะทำงานต่อไปได้แม้ว่าเธรดของผู้ปฏิบัติงานใดๆ จะถูกฆ่าแบบอะซิงโครนัสก็ตาม คุณสามารถตรวจสอบได้ด้วยตัวเอง
การนำไปปฏิบัตินี้ก่อตั้งขึ้นจากการผสมผสานระหว่างแนวคิดคลาสสิกและแนวคิดแปลกใหม่ในการเขียนโปรแกรมแบบไร้ล็อค ประกอบด้วยการใช้งานซอฟต์แวร์ Transactional Memory รูปแบบใหม่ คิวแบบไม่ต้องล็อค รูปแบบดั้งเดิมแบบไม่ต้องล็อค ดั้งเดิม std::atomic_shared_ptr ที่ไม่มีการล็อค ตัวกำหนดเวลาที่ไม่มีการล็อค ตัวจัดสรรหน่วยความจำที่ไม่มีการล็อค คอมไพล์ DAG และอีกมากมาย!
สำหรับรายละเอียดโดยละเอียดของอัลกอริธึมที่ไม่มีการล็อคทั้งหมดที่ทำให้เกิดการทำงานของเครื่องยนต์ เหตุผลสำหรับการออกแบบ การวัดประสิทธิภาพ และอื่นๆ โปรดดูที่เอกสารประกอบ: เครื่องยนต์ Peredvizhnikov: การออกแบบและการใช้งานเครื่องกำหนดเวลาที่ไม่มีการล็อคโดยสมบูรณ์ .
เพื่ออำนวยความสะดวกในการพัฒนาด้วยการออกแบบที่มุ่งเน้นข้อมูล Peredvizhnikov Engine จะใช้ฐานข้อมูลในหน่วยความจำที่ได้รับการปรับให้เหมาะสมสำหรับการเข้าถึงแบบส่วนประกอบและรองรับชุดข้อมูลขนาดใหญ่ ก่อตั้งขึ้นบน 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 Engine มีให้ใช้งานฟรีภายใต้ใบอนุญาต GPLv3 อย่างไรก็ตาม ฉันอาจอนุญาตให้ใช้รหัสบางส่วนหรือทั้งหมดภายใต้ใบอนุญาตที่แตกต่างกันได้เป็นกรณีไป กรุณาสอบถามทางอีเมล์
คุณสามารถติดต่อฉันหากมีคำถาม ความคิดเห็น หรือข้อกังวลใด ๆ ที่เกี่ยวข้องกับซอร์สโค้ดหรืออัลกอริธึมพื้นฐาน
นอกจากนี้ ฉันกำลังหางานอย่างแข็งขันอยู่ในขณะนี้ โปรดอย่าลังเลที่จะติดต่อเกี่ยวกับโอกาสที่เหมาะสม
อีเมลของฉันคือ: [email protected]