Willkommen im #Neuland
Login wie bei quake.ingame.de zuvor, die Passwörter aus der alten Datenbank wurden aber gelöscht - einmal hier neu anfordern.
Wer seine E-Mail-Adresse nicht mehr hat oder kennt, bitte eine Nachricht mit Infos schicken o. im Discord melden.

PQ Discord Server: #planetquake                                                                                                                                         Spenden? Hier entlang!

[C++] WinSock2 blocking calls

Forum für alles rund ums Coden und web.design - HTML, XHTML, XML, CSS, PHP, ASP, Zugriffsrechten, Mods uvm.
Antworten
Roughael
Stripe
Stripe
Beiträge: 2498
Registriert: Mär 2002

[C++] WinSock2 blocking calls

Beitrag von Roughael »

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
]O-malar1a[

Beitrag von ]O-malar1a[ »

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.
Roughael
Stripe
Stripe
Beiträge: 2498
Registriert: Mär 2002

Beitrag von Roughael »

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
Roughael
Stripe
Stripe
Beiträge: 2498
Registriert: Mär 2002

Beitrag von Roughael »

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
Antworten