Workaround für PeekMessage?
-
Guten Abend allerseits,
Erstens: Quelltext,
Zweitens: FrageErstens:
while (true) { if (PeekMessage(&msg,NULL,0,0,PM_REMOVE)) { if (msg.message == WM_QUIT) break; TranslateMessage(&msg); DispatchMessage(&msg); } else machwas(); }Zweitens:
Auf diese Weise kann ich unabhängig davon, ob Nachrichten da sind immer eine Standard-Funktion ausführen. Cool.
Meine CPU-Auslastung dabei ist im Gegensatz zu GetMessage() bei 50%. Uncool.Mit GetMessage() geht die CPU-Auslastung gegen 0, aber wie kann ich trotzdem eine Standard-Funktion ausführen?
Oder gibts auch einen Trick um die CPU-Auslastung bei PeekMessage() zu reduzieren?
Danke.
lg Max
-
WaitMessage?
-
PeekMessage ist busy waiting, wie stellst du dir das vor?! Lol..
-
Danke für die schnelle Antwort.
AFAIK hilft mir WaitMessage(), wenn ich meine Standard-Funktion nicht immer ausführen möchte sondern nur bedingt.
Wenn ich falsch liege, korrigiert mich - am besten mit Beispiel.
lg Max
-
Sleep(0)
-
warum benötigst du PeekMessage?
-
Ich muss regelmäßig einen Socket auf Daten abfragen und sie verarbeiten.
lg Max
-
dafür gibt es WSAAsyncSelect, da kriegst du eine Fensternachricht wenn es etwas vom Socket zu lesen gibt
-
Oder Threads und alles manuell machen, aber das impliziert ja WSAAsyncSelect
.