Anlaşıldı yanıt verecek kimse yok, deneme yanılma yöntemiyle bulunur artık ne yapalım.
IOCP'yi kullanırken nasıl kullanmalıyım ? - IOCP- Input Output Completion Ports - Gameserver Networking
Selamlar,
Bir oyun sunucusu/motoru geliştirmekteyim, sadece sunucu taraflı geliştirme işlemi yapmaktayım; daha önce birileri tarafından geliştirilmiş olan bir tcp network/soket sistemi var, bu soket sistemi tam anlamıyla sağlıklı çalışmıyor gibi görünüyor, dolayısıyla IOCP teknolojisini tamamen öğrenip kullanarak, sıfırdan bir TCP network kütüphanesi oluşturmayı daha sonra bu kütüphaneyi projemde kullanmayı planlıyorum.
Tam olarak IOCP'nin bazı konularında detaylı bilgi edinemedim.
IOCP kullanırken Worker Thread denilen bir olay var ya hani, bu Send/Recv/Accept işlemlerinin tamamı oradan dönüyor, bunları farklı threadlara ayırmak performansı arttırır mı, yoksa tüm işlemler yine Worker Thread üzerinde kalırsa mı daha iyi olur bilmiyorum.
Sorularımı yanıtlayabilecek birileri var mı ?
Soru 1 : IOCP kullanırken Send/Recv/Accept vb. işlemlerinin tamamı için ayrı ayrı IOCP sistemleri oluşturup öyle mi kullanmalıyım, yoksa tek bir Worker Thread üzerinden Send/Recv/Accept işlemleri kullanılmasını mı önerirsiniz?
Soru 1 detaylandırma :
Örneğin accept işlemi için ayrı bir thread ve iocp yapısı oluşturup,
THREADCALL ACCEPTWORKERTHREAD şeklide 1 kere çağırsam ve farklı bir tamamlama noktasındaki accept olaylarını buradan yönetsem.
THREADCALL RECVWORKERTHREAD şeklinde sistemde var olan işlemci sayısı kadar oluştursam clientten gelen tüm istekleri bu yapıdan karşılasam performansı arttırır mı ?
THREADCALL SENDWORKERTHREAD şeklinde sistemde var olan işlemci sayısı kadar oluştursam bağlı clientlere gönderilecek tüm verileri burdan göndersem performansı artırır mı ?
Bu açıkladığım şekilde ayrı ayrı olması mı daha iyi ve sağlıklı olur, yoksa :
THREADCALL ALLWORDERTHREAD şeklinde sistemde var olan işlemci sayısı kadar oluşturup Send/Recv/Accept olaylarının tamamını buradan mı yönetmeliyim ?
Soru 2 : IOCP kullanırken THREADCALL yapısını kullanırken, sistemde var olan işlemci sayısını 2 ile çarpıp mı çağırmalıyım, yoksa bu alanı oluştururken 30-40 adet çekirdek varmış gibi direkt 30 kere çağırsam bir sorun olur mu kafam karışık.
Bu konuyu aydınlatabilir miyiz, çok uzun süredir takılı kaldığım bir nokta, sadece gerekli kısımları yazmaya çalıştım, anlaşılmayan nokta varsa söyleyin, detaylandırmaya çalışayım.
Windows Ev | Diğer | Uygulamalar
Kilitli Soru. Bu soru Microsoft Destek Topluluğu’ndan aktarıldı. Yararlı olup olmadığını belirtmek için oy verebilirsiniz ancak yorum veya yanıt ekleyemez ya da soruyu takip edemezsiniz.
2 yanıt
Sıralama ölçütü: En yararlı
-
Anonim
2022-11-21T14:30:24+00:00 -
Anonim
2022-11-20T22:51:36+00:00 Bu konu hakkında bilgisi olan var mı ?