[Lazarus] Strange dependency of units
Michael Schnell
mschnell at lumino.de
Thu Apr 5 16:33:53 CEST 2012
On 04/05/2012 03:39 PM, Michael Van Canneyt wrote:
> Events do not automagically appear in your application, even under
> windows.
>
> They are not interrupts.
AFAIK, in Windows, the Application main thread can call an API function
to wait for the next message. Here it uses no CPU cycles and when a
message in the queue for that thread arrives from what origin ever, the
thread is activated at once and will run according to it's priority thus
minimizing the latency to the limit that the OS and the other running
tasks allow. I don't see why a "timeout" would necessarily be enabled to
return from that call (providing real polling), as there should be no
notifications to the main thread that don’t run through the queue,
generating such a message and waking the Main Thread.
Of course if the main thread is just working on an event, when a new
event is fed to the queue, it will first finish its current work (unless
it explicitly calls "Application.ProcessMessages") before it is ready to
handle the new event. But this is just how a single-threaded application
needs to work.
I would not call this "polling", as the "main Loop" only runs at max a
single turn for each event, while the process sleeps until the next
event arises.
Maybe GTK does not allow for such a design, though, because not all
events can be run though a single queue with embedded waiting/waking
functionality.
No idea at all regarding fpGUI/X11 etc.
-Michael
More information about the Lazarus
mailing list