Hozzászólások
Azért raktam ezt a témát a flame-be, mert kedvenc viccoldalamon az alábbi topicban megy az észosztás:
Mégsem lesz új parancssor a Longhorn-ban
A felvetett problémával kapcsolatban annyit kérdeznék ami a topicban is látszik, hogy azért mert valamit scripttel érek el a winben (wsh) ami a szabványos WMI-n keresztül kommunikál lehetséges-e, hogy egy program sohasem csináljon semmit.
Konkrétan:
[code:1:3076370b20]
A tévedésed az, hogy az üzenetfeldolgozó ciklusnak egyáltalán nem kell Sleep()-elnie, mert úgy is várhat eseményekre, hogy meg se kapja addig a vezérlést, amíg egy újabb (esemény) nem érkezik részére. Valahogy így:
while (GetMessage(msg))
DispatchMessage(msg);
Ebben semmi poll nincs, ez egy egyszerű előre nem rögzített iteráció-számú feltételes ciklus, amely azonban feleslegesen sosem fut le, hanem csak akkor, ha van is effektív mit csinálnia (a feltételvizsgálaton kívül is). A pollozás pedig az, amikor utóbbi nem valósul meg.
[/code:1:3076370b20]
Hogyan lehetséges, hogy egy program fut miközben mégsem fut???
Valahol valaminek futnia kell szerintem (gumicsirke).
- A hozzászóláshoz be kell jelentkezni
nekem ebbol az jon le, hogy a Getmessage meg a korulotte levo while az fut, nem?
- A hozzászóláshoz be kell jelentkezni
[quote:11916e5c9e="ruczati"]nekem ebbol az jon le, hogy a Getmessage meg a korulotte levo while az fut, nem?
Szerintem is, de a winfanok meg vannak győződve róla, hogy nem fut.
Ezért is kérdezem, hogy most akkor gumicsirke vagy apróbéka? :D
- A hozzászóláshoz be kell jelentkezni
Idézet az MSDN-ből (MSDN:GetMessage):
The GetMessage function retrieves a message from the calling thread's message queue. The function dispatches incoming sent messages until a posted message is available for retrieval.
Unlike GetMessage, the PeekMessage function does not wait for a message to be posted before returning.
Vagyis a GetMessage csak akkor tér vissza, ha van esemény. Addig vár (sleep-el), és a scheduler csak akkor ütemezi újra a taszkot, ha történt valami.
Azaz semmi más nem történt, mint hogy a sleep-et elrejtették egy függvényhívásba.
HTH:
Babszem.
- A hozzászóláshoz be kell jelentkezni