stefankittel
Goto Top

Hohe CPU Last bei socket Funktion recv(), wie macht man das am schlauesten?

Hallo,

ich habe eine Klasse mit welcher ich auf IMAP-Email-Server zugreife (100Mbit Anbindung). Das ganze unter Visual Studio 2008 mit C++ und MFC.
Ich habe diese Frage nicht in diesen Bereich verschoben, da dieses Problem wohl auch unter Java und Pearl auftreten soll.

Ich rufe Daten von einem Server ab. Diese kommen mal mehr mal weniger schnell an.
Ich nutzen nicht CSocket sondern connect() und recv() im nonblocking mode. Wenn ich also sehe, dass gerade keine Daten mittels recv angekommen sind, warte ich kurz mittels Sleep().
Auch mit select() wird die Last nicht geringer.

Wie macht man das am schlauesten ohne diese CPU Last?
Sollte ja möglich sein quasi komplett ohne.

Stefan

Content-Key: 131603

Url: https://administrator.de/contentid/131603

Printed on: April 19, 2024 at 20:04 o'clock

Member: gijoe
gijoe Dec 21, 2009 at 01:15:11 (UTC)
Goto Top
Hi, hast du das ganze schonmal in einen eigenen Thread ausgelagert? Und wie lange dauert dein Sleep? Für micht tönt das nach einer while(true)-Schleife die pausenlos läuft...
Member: StefanKittel
StefanKittel Dec 21, 2009 at 01:33:57 (UTC)
Goto Top
Hallo,
das Problem lag im CString::Trim(). Diesen hatte ich verwendet um den Buffer zu reinigen und der ist seeeehr langsam.

Hier stehts ausführlich.
http://www.c-plusplus.de/forum/viewtopic-var-t-is-256562-and-highlight- ...

Stefan