Runs a single iteration for the given main loop.
This involves checking to see if any event sources are ready to be processed, then if no events sources are ready and
is true, waiting for a source to become ready, then dispatching the highest priority events sources that are
ready. Otherwise, if
may_block is false sources are not waited to become ready, only those
highest priority events sources will be dispatched (if any), that are ready at this given moment without further waiting.
Note that even when
may_block is true, it is still possible for iteration
to return false, since the wait may be interrupted for other reasons than an event source becoming
a MainContext (if null, the default context will be used)
whether the call may block.
true if events were dispatched.