Bu temelde, iplik sorusuna karşı bir süreçtir, her ikisi de çok farklı değildir, bazen ipliklere hafif süreçler denir. En büyük fark, ayrı bir işlemin kendi adres alanı olması, ancak başka farklılıklar olmasıdır (1):
İşlem başına
- adres alanı
- Global değişkenler
- Dosyaları aç
- Alt süreçler
- Bekleyen alarmlar, kesmeler ve sinyal işleyicileri
Konu başına
- Program sayıcı
- Defterleri
- yığın
- Durum
Bu farklılıklara dayanarak, dosya tanıtıcılarını ve genel değişkenleri paylaşabilmeniz için aynı işlemde bir sunucu ve istemci iş parçacığına sahip olmak kullanışlı olabilir. Bu, 'aynı işlemde' yaklaşımı için bir argüman, başka bir (küçük) argüman ise işlem başına yalnızca bir 'Windows Güvenlik Duvarı' pop-up'ı almanızdır. 'Farklı süreç' yaklaşımı için bir argüman, bir kişinin birden fazla istemci çalıştırmak zorunda kalmadan birden fazla sunucu çalıştırabilmesidir. Bu, kurulum gibi özel bir ev sahibi için ideal olacaktır ve birinci şahıs nişancılarda yaygın olarak gördüğümüz bir yaklaşımdır.
Şimdi çevrimdışı oyun için (ve belki de tek oyunculu için bile) bir sunucu işlemine veya iş parçacığına sahip olma fikrine gelince, bu pratikte çok kullanılan harika bir fikirdir. Yükleme ekranına bakarak birçok oyunun bunu yaptığını söyleyebilirsin, 'alma' gibi küçük ipuçları onu verir. Bunu yapmak mantıklıdır çünkü çok oyunculu yapacaksanız oyun kurallarının çoğu sunucu tarafından yönetilecektir, o zaman neden tek oyunculu olarak onları yönetmiyorsunuz? Bu, yazmanız gereken kodu azaltır ve istemci ile 'oyun' arasında daha net bir ayrım sağlar ve bu da kod kalitenizi iyileştirir.
Şimdi süreçler ve iş parçacıkları arasında iletişim kurmaya ne dersiniz? Çapraz süreç iletişimi birçok şekilde yapılabilir (adlandırılmış-) borular, paylaşılan bellek, COM, gerçekten kullandığınız teknolojiye bağlıdır. Ancak bir sunucu yapıyorsanız, muhtemelen soket ve TCP benzeri bir şey kullanarak bir ağ varyasyonu ile gitmek isteyeceksiniz, elbette LIDGREN kullanışlı olacaktır.
Bu tekniklerin birçoğu çapraz iplik iletişimi için de geçerlidir. Ancak bu daha çok kullandığınız tekniklere bağlıdır. Yine TCP ile gidebilirsiniz, ancak belki de daha basit bir sistem olaylar ve bazı marshalling olacaktır, ancak bu oyun döngünüzü belirleyici olmayabilir (2).
Kaynaklar
- İşletim sistemleri tasarımı ve uygulaması (MINIX kitabı), 3. baskı, Andrew S. Tanenbaum
- Glenn Fiedler tarafından zamanınızı düzeltin: http://gafferongames.com/game-physics/fix-your-timestep/