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-ID: 131603

Url: https://administrator.de/forum/hohe-cpu-last-bei-socket-funktion-recv-wie-macht-man-das-am-schlauesten-131603.html

Ausgedruckt am: 05.04.2025 um 20:04 Uhr

gijoe
gijoe 21.12.2009 um 02:15:11 Uhr
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...
StefanKittel
StefanKittel 21.12.2009 um 02:33:57 Uhr
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