Şu anda üzerinde çalıştığım C ++ motoru birkaç büyük iş parçacığına ayrıldı - Nesil (yordamsal içeriğimi oluşturmak için), Oynanış (AI, komut dosyaları, simülasyon için), Fizik ve İşleme.
İş parçacıkları, iş parçacığından iş parçacığına geçen küçük ileti nesneleri aracılığıyla birbirleriyle iletişim kurar. Adımlamadan önce, bir iş parçacığı tüm gelen iletilerini işler - dönüşüm, nesne ekleme ve kaldırma vb.
Sürecin başlarında ve birkaç şey fark ettim:
Mesajlaşma sistemi hantaldır. Yeni bir ileti türü oluşturmak, temel Message sınıfının alt sınıfının sınıflandırılması, türü için yeni bir numaralandırma oluşturulması ve iş parçacıklarının yeni ileti türünü nasıl yorumlaması gerektiğine ilişkin mantık yazmak anlamına gelir. Bu geliştirme için bir hız tümseği ve yazım hatası tarzı eğilimli. (Sidenote- bunun üzerinde çalışmak bana dinamik dillerin ne kadar harika olabileceğini takdir etmemi sağlıyor!)
Bunu yapmanın daha iyi bir yolu var mı? Bunu otomatik yapmak için boost :: bind gibi bir şey kullanmalı mıyım? Endişeliysem, bunu söyleyebilme yeteneğimi kaybedersem, mesajları türe veya başka bir şeye göre sıralayabilirim. Bu tür bir yönetimin gerekli olup olmayacağından emin değilim.
İlk nokta önemlidir, çünkü bu iplikler çok fazla iletişim kurar. Mesaj oluşturma ve iletme, olayları gerçekleştirmenin büyük bir parçasıdır. Bu sistemi kolaylaştırmak istiyorum, aynı zamanda yardımcı olabilecek diğer paradigma da açık olmak istiyorum. Bunu kolaylaştırmak için düşünmem gereken farklı çok iş parçacıklı tasarımlar var mı?
Örneğin, nadiren yazılan, ancak birden çok iş parçacığından sıkça okunan bazı kaynaklar vardır. Muteksler tarafından korunan ve tüm iş parçacıklarının erişebileceği paylaşılan veriye sahip olma fikrine açık olmalı mıyım?
Bu benim ilk defa çoklu iş parçacıkları akıldan başlayarak bir şeyler tasarlıyor. Bu erken aşamada aslında çok iyi gittiğini düşünüyorum (düşünerek) ama ölçeklendirme konusunda endişeliyim ve yeni şeyler uygulamadaki kendi verimliliğim.