C++ server pro 2D hru, cyklus zatezuje procesor – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

C++ server pro 2D hru, cyklus zatezuje procesor – C / C++ – Fórum – Programujte.comC++ server pro 2D hru, cyklus zatezuje procesor – C / C++ – Fórum – Programujte.com

 

Diccon0
Duch
28. 12. 2011   #1
-
0
-

Dobry den,

Potrebuji udelat v C++ server pomoci winsock, na kterem by fungovala 2D hra, ale resim problem. Server jede na 3 vlaknech, kazde ma v sobe cyklus, aby se neukoncilo a kazde se stara o urcitou vec v serveru. Jenze tyto cykly strasne zatezuji procesor a to opravdu az neuveritelne moc. Jinak server je v consoli. Je nejaky jiny zpusob jak to udelat aniz by mi to zatizilo procesor? Aby ten program jakoby nic nedelal kdyz se nic nedeje a pri nejake udalosti (prichazeji data) by teprve zacal nejak pracovat ?

Nahlásit jako SPAM
IP: 85.70.42.–
liborb
~ Redaktor
+18
Guru
28. 12. 2011   #2
-
0
-

Odpověděl sis sám, vlákno (se soketem) bude čekat na data, takže soket bude blokující.

Nahlásit jako SPAM
IP: 78.80.52.–
Diccon
~ Anonymní uživatel
11 příspěvků
28. 12. 2011   #3
-
0
-

Jenze když bude blokující nebudu moct čekat až prijde zpráva od jakehokoliv klienta a to potřebuji protože nechci hru ve stylu, že je jeden serverclient a druhý client.

Nahlásit jako SPAM
IP: 94.112.111.–
liborb
~ Redaktor
+18
Guru
28. 12. 2011   #4
-
0
-

A co mít - co klient to vlákno? Server bude čekat na data od všech připojených klientů atd. atd.

No a jinak si můžeš přes funkci WSAAsyncSelect zaregistrovat svojí WM_ zprávu (typicky WM_USER+1), která ti přijde do tvého okna ve chvíli, kdy se něco stane (třeba přijdou data), ale k tomu potřebuješ smyčku zpráv, takže to v konzoli samo asi nepůjde.

Nahlásit jako SPAM
IP: 78.80.52.–
Diccon0
Duch
28. 12. 2011   #5
-
0
-

A neni nejaky jiny zpusob ? Vzdyt kdybych mel 100 hracu to budu mit 100 vlaken kdyz jich bude vic tak jeste vic vlaken, to by bylo snad prilis narocne pro PC ne ?

Predem diky za odpoved

Nahlásit jako SPAM
IP: 85.70.42.–
liborb
~ Redaktor
+18
Guru
28. 12. 2011   #6
-
0
-

Jsou 2 možnosti: buď už vlákna budou většinu doby spát (nebudou žádná data) nebo bude neustále plno dat a server nebude tak jako tak stíhat resp. bude se prodlužovat doba odezvy. Takže je otázka, co je priorita.

Zasláno z mobilního telefonu.

Nahlásit jako SPAM
IP: 82.145.210.–
zlz
~ Anonymní uživatel
634 příspěvků
28. 12. 2011   #7
-
0
-

Co všechno v těch cyklech potřebuješ dělat?

Nahlásit jako SPAM
IP: 213.211.51.–
Diccon
~ Anonymní uživatel
11 příspěvků
29. 12. 2011   #8
-
0
-

Dobrý den.
Takže mi chcete říci, že server na kterém je připojeno třeba 1000 lidí ma v tu dobu 1000 threadů?

Nahlásit jako SPAM
IP: 94.112.111.–
liborb
~ Redaktor
+18
Guru
29. 12. 2011   #9
-
0
-

Klidně si takovou implementaci dokážu představit. A taky si dokážu představit, že jedno vlákno obslouži např. 20 klientů, ale padne na to o něco víc programátorského sádla. A taky si dokážu představit, že těch 1000 klientů je na přetíženém serveru v jednom vlákně (všichni to chtějí najednou, server bude umět vyřídit požadavky pouze po jednom a tak se budou alespoň pravidelně střídat). Takže zpět k tomu důležitému, tj. k otázce, kterou položil zdenda: co ten server bude vlastně dělat, co bude v těch cyklech, jak často bude mě jednoho klienta dotazován, jaká je přípustná prodlevá odpovědi (bude-li nějaká) atd. atd.

Zasláno z mobilního telefonu.

Nahlásit jako SPAM
IP: 82.145.209.–
volftomas0
Newbie
30. 12. 2011   #10
-
0
-

#4 liborb
nic nebrani tomu mit v konzoli smycku zprav (pomoci http://msdn.microsoft.com/en-us/library/windows/desktop/ms681944(v=vs.85).aspx tusim).

nicmene asi neni duvod mit server consolovy... napriklad pro pozdejsi moznosti "zasahu admina do hry" nebo tak je lepsi okeni...

Nahlásit jako SPAM
IP: 81.200.55.–
volftomas0
Newbie
30. 12. 2011   #11
-
0
-

#8 Diccon
v idealnim pripade ano. jednotliva vlakna by nemela totiz delat nic super narocneho. spise akorat poslat prislusnou zpravu (kdyz se bavime o windowsech) hlavnimu vlaknu (treba: WM_TAHNI_NA_POZICI nebo tak neco) a pak se vlakno zase prepne do modu cekani na data.

Nahlásit jako SPAM
IP: 81.200.55.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 92 hostů

Podobná vlákna

GUI - pro hru — založil zuufku

Grafika pro hru — založil crAzY^

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý