On Monday, 12 December 2011 at 10:26:52 UTC, Somedude wrote:
Le 05/12/2011 22:36, Jonas Drewsen a écrit :
Anyway - I _have_ said that I will add a data availability poll
functionality so I guess your initial concern is also covered.
/Jonas
Just an idea: would it be possible/useful to use the
signals/slots
mechanism for this kind of synch ?
This would be most useful if there were some kind of main loop.
This is needed because the request is done in another thread and
the response should be handled in the main thread. Without an
main loop in the main thread or a destinct call to e.g. a poll()
method the signal/slot s would not work.
As a side note I would very much like D to enter a main loop with
a task scheduler as part of the runtime. That way co-routines and
event handling would be much nicer to use out of the box. For
example:
// The main function is running a fiber in the main loop.
// the main loop terminates when no more fibers are active
void main(string[] args) {
fiber( { auto content= download("google.com"); write(content);
} );
fiber( { sleep(2.0); writeln("Hello in 2 secs"); } );
writeln("first line written");
}
The download() yields until data is downloaded and the sleep()
yield until the time has passed. You wouldn't notice this when
not using fibers because you would only have the main() fiber
which terminates the main loop (and the program) when it is done.
Optimally the runtime should support replacing the standard
mainloop scheduler with your own.
/Jonas