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.
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!
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
-
- Stripe
- Beiträge: 2498
- Registriert: Mär 2002
[C++] WinSock2 blocking calls
<-- Ehemaliger TTK-Bandit, bis inquake rumzickte -->
Dict.cc Firefox Addon | Q3Devel | Code3Arena(De) | GameType Revolution | Open Game Libraries
Dict.cc Firefox Addon | Q3Devel | Code3Arena(De) | GameType Revolution | Open Game Libraries
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.
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.
-
- Stripe
- Beiträge: 2498
- Registriert: Mär 2002
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.
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
Dict.cc Firefox Addon | Q3Devel | Code3Arena(De) | GameType Revolution | Open Game Libraries
-
- Stripe
- Beiträge: 2498
- Registriert: Mär 2002
hat sich erledigt danke..
hab rausgefunden, dass man bei select nen timeout einstellen kann
Have Fun!
Bandit.
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
Dict.cc Firefox Addon | Q3Devel | Code3Arena(De) | GameType Revolution | Open Game Libraries