Zeige Ergebnis 1 bis 4 von 4
  1. #1
    Benutzerbild von Roughael
    Registriert seit
    Mär 2002
    Beiträge
    3.726
    Likes
    0

    [C++] WinSock2 blocking calls

    hu
    ich hab vor kurzem die tuts hier durchgemacht:
    http://www.c-worker.ch/tuts.html

    die schreiben, dass nicht blockierende calls stark cpu leistung ziehn.
    mein problem damit is, ich hab vor das in nem game zu nutzen.
    und wenn ich mir quake2(winsock 1) anseh, sind da non blocking calls verwendet.
    wie seht ihr das mit (non-)blocking calls ?
    was würdet ihr machn ? threads ? oder gibbet vieleicht ne bessere (multi os) schnittstelle als winsock2 ?
    Have Fun!
    Bandit.
    <-- Ehemaliger TTK-Bandit, bis inquake rumzickte -->

    Dict.cc Firefox Addon | Q3Devel | Code3Arena(De) | GameType Revolution | Open Game Libraries


  2. #2
    ]O-malar1a[
    Gast
    stimmt schon, 'nb-sockets' sind arg prozessorlastig und win-spezifische, asynchrone sockets, helfen auch nicht weiter.
    aufgrund dessen, arbeitet man - wie in dem text beschrieben - mit standard-sockets in verbindung mit 'select()'.
    die funktion ueberwacht eine menge von sockets und ermoeglicht es, auf einzelne 'socket-messages' zu reagieren.
    man koennte natuerlich auch auf threads ausweichen, aber bei server-applikationen fuehrt dies schnell (je nachdem was du vor hast) zu einer unmenge an ueberwachten threads, was einen server dementsprechend rasch ueberfordern kann. ein 'deadlock' ist auch keine seltenheit.
    hinzu kommt, dass bei denkfehlern in der programmierung, sich laufende threads schnell in die quere kommen (ueberschneiden, gegenseitig beeinflussen), dies hat unter umstaenden inkonsistente daten zu folge.

    also, ich arbeite immer mit 'select()' und bin hinsichtlich der performance sehr zufrieden.
    manchmal ist es noetig, mit select ueberwachte(n) deskriptor(en)
    in einen status-thread zu packen, kommt aber wieder auf das problem an.

  3. #3
    Benutzerbild von Roughael
    Registriert seit
    Mär 2002
    Beiträge
    3.726
    Likes
    0
    Danke schoma für die antwort
    wenn ich das richtig sehe blockiert select aber auch oder nich ?
    zumindest bis irgendwo was passiert.
    in nem game wärs doch aber doof, wenn grad nix passier, dass man deswegen laggs bekommt.
    wie wärs denn wenn das select in nen thread gemacht wird.
    dann würde nur ein thread notwendig sein und es könnten sich keine sockets in die quere kommen.
    Have Fun!
    Bandit.
    <-- Ehemaliger TTK-Bandit, bis inquake rumzickte -->

    Dict.cc Firefox Addon | Q3Devel | Code3Arena(De) | GameType Revolution | Open Game Libraries

  4. #4
    Benutzerbild von Roughael
    Registriert seit
    Mär 2002
    Beiträge
    3.726
    Likes
    0
    hat sich erledigt danke..
    hab rausgefunden, dass man bei select nen timeout einstellen kann
    Have Fun!
    Bandit.
    <-- Ehemaliger TTK-Bandit, bis inquake rumzickte -->

    Dict.cc Firefox Addon | Q3Devel | Code3Arena(De) | GameType Revolution | Open Game Libraries

Forumregeln

  • Es ist dir nicht erlaubt, neue Themen zu verfassen.
  • Es ist dir nicht erlaubt, auf Beiträge zu antworten.
  • Es ist dir nicht erlaubt, Anhänge hochzuladen.
  • Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.
  •