On Jun 4, 2008, at 4:07 AM, Marc Lehmann wrote:
- use threads to overlap (blocking) network I/O
with computations
Now, except for the very last suggestion, that's hardly any news to
anybody.
And if the last suggestion is meant seriously, then, well, forget
about
libev, on windows, you do not use non-blocking I/O at all, you don't
use
events, you use THREADS.
and that might well be true... to get perfromance out of windows, use
threads. preferably thread pools.
I think they mean that you want to use separate threads for
computation and data communication....
With the data communication threads, IIRR, being the same # as CPUs
(or something like that)...
I think I recall finding that IOCP either uses a thread-pool or
interrupts currently executing code for its callbacks... so you'd have
IOCP perform data management and on completion do the minimum amt of
work (queue up the data to be processed).
This doesn't quite fit into libev's workflow directly (booo!), though
one 'could' create some interesting layers...
Ex: something like libeio's interface could take advantage of some
items transparently, or a layer for libev that handles data transport
and alerts you to readiness for data available in filled buffers or
buffers have room to put data (kinda like the bufferevent
abstraction...).
_______________________________________________
libev mailing list
[email protected]
http://lists.schmorp.de/cgi-bin/mailman/listinfo/libev