Aracılığıyla paylaş

IOCP'yi kullanırken nasıl kullanmalıyım ? - IOCP- Input Output Completion Ports - Gameserver Networking

Anonim
2022-11-19T19:21:21+00:00

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.

0 yorum Açıklama yok

2 yanıt

Sıralama ölçütü: En yararlı
  1. Anonim
    2022-11-21T14:30:24+00:00

    Anlaşıldı yanıt verecek kimse yok, deneme yanılma yöntemiyle bulunur artık ne yapalım.

    Bu yanıt yardımcı oldu mu?

    0 yorum Açıklama yok
  2. Anonim
    2022-11-20T22:51:36+00:00

    Bu konu hakkında bilgisi olan var mı ?

    Bu yanıt yardımcı oldu mu?

    0 yorum Açıklama yok