การพูดคุยในบริบทของเกมโดยใช้ openGL renderer:
สมมติว่ามีสองหัวข้อ:
อัพเดทตรรกะของเกมและฟิสิกส์เป็นต้นสำหรับในเกมวัตถุ
ทำให้ openGL ดึงสายสำหรับแต่ละวัตถุในเกมตามข้อมูลในวัตถุในเกม (เธรด 1 นั้นทำการปรับปรุงอยู่เสมอ)
ยกเว้นว่าคุณมีสองสำเนาของวัตถุแต่ละเกมในสถานะปัจจุบันของเกมคุณจะต้องหยุดเธรด 1 ในขณะที่เธรด 2 ทำการเรียกการดึงมิฉะนั้นวัตถุในเกมจะได้รับการอัปเดตในช่วงกลางของการดึงการดึงสำหรับวัตถุนั้น ไม่พึงประสงค์!
แต่การหยุดเธรด 1 เพื่อโทรออกอย่างปลอดภัยจากเธรด 2 ฆ่าวัตถุประสงค์ทั้งหมดของการทำงานหลายเธรด / การทำงานพร้อมกัน
มีวิธีการที่ดีกว่านี้กว่าการใช้หลายร้อยหรือหลายพันหรือซิงค์วัตถุ / รั้วเพื่อให้สถาปัตยกรรมแบบมัลติคอร์สามารถใช้ประโยชน์จากประสิทธิภาพการทำงานหรือไม่
ฉันรู้ว่าฉันยังสามารถใช้มัลติเธรดสำหรับการโหลดพื้นผิวและการรวบรวมเฉดสีสำหรับวัตถุที่ยังไม่ได้เป็นส่วนหนึ่งของสถานะเกมปัจจุบัน แต่ฉันจะทำอย่างไรกับวัตถุที่ใช้งาน / มองเห็นได้โดยไม่ทำให้เกิดความขัดแย้งกับการดึงและอัปเดต
จะเกิดอะไรขึ้นถ้าฉันใช้การล็อกการซิงค์แยกกันในแต่ละวัตถุของเกม วิธีนี้เธรดใด ๆ จะบล็อกเฉพาะวัตถุหนึ่งรายการ (กรณีที่เหมาะสมที่สุด) แทนที่จะเป็นทั้งรอบการอัพเดท / วาด แต่การล็อกแต่ละวัตถุมีค่าใช้จ่ายเท่าใด (เกมอาจมีวัตถุนับพันรายการ)