OpenGL oluşturucusuna dayalı bir oyun bağlamında konuşma:
İki iş parçacığı olduğunu varsayalım:
Oyun içi nesneler için oyun mantığı ve fizik vb.
Oyun nesnelerindeki verilere dayanarak her oyun nesnesi için openGL çizim çağrıları yapar (1 numaralı konu güncellenmeye devam eder)
Oyunun şu anki durumunda her oyun nesnesinin iki kopyası yoksa, Konu 2'yi duraklatmanız gerekirken, Konu 2 çizim çağrısı yapar, aksi takdirde oyun nesneleri söz konusu nesne için bir çizim çağrısının ortasında güncellenir. istenmeyen bir durumdur!
Ancak, iplik 2'den güvenli bir şekilde telefon görüşmesi yapmak için iplik 1'i durdurmak, çoklu kullanım / eşzamanlılığın tüm amacını öldürür
Bunun için yüzlerce veya binlerce kullanmak veya nesneleri / çitleri senkronize etmekten daha iyi bir yaklaşım var mı, böylece çok çekirdekli mimari performans için kullanılabilir mi?
Hala mevcut oyun durumunun bir parçası olan nesneler için doku yüklemek ve gölgelendiricileri derlemek için multithreading kullanabileceğimi biliyorum, ancak çizim ve güncelleme ile çakışmaya neden olmadan aktif / görünür nesneler için nasıl yapabilirim?
Oyun nesnesinin her birinde ayrı senkronizasyon kilidi kullanırsam ne olur? Bu şekilde, herhangi bir iş parçacığı tüm güncelleme / çizim döngüsü yerine yalnızca bir nesne üzerinde (ideal durum) engellenir! Ancak her bir nesneye kilit almak ne kadar maliyetli (oyunun bin nesnesi olabilir)?