Execute the timers before pollset initialisation.

Since executing the timers might modify the source pollsets we have
to defer the initialisation until after the timers have executed.

Signed-off-by: Christian Gudrian <christian.gudrian@fluidon.com>
This commit is contained in:
Christian Gudrian 2010-10-09 19:19:50 +02:00 committed by Martin Sustrik
parent 318cdd1f24
commit f5030a93a5
2 changed files with 4 additions and 3 deletions

View File

@ -8,6 +8,7 @@ Bernd Prager <bernd@prager.ws>
Bernd Melchers <melchers@ZEDAT.FU-Berlin.DE>
Brian Buchanan <bwb@holo.org>
Chris Wong <chris@chriswongstudio.com>
Christian Gudrian <christian.gudrian@fluidon.com>
Conrad D. Steenberg <conrad.steenberg@caltech.edu>
Dhammika Pathirana <dhammika@gmail.com>
Dhruva Krishnamurthy <dhruva@ymail.com>

View File

@ -147,14 +147,14 @@ void zmq::select_t::loop ()
{
while (!stopping) {
// Execute any due timers.
uint64_t timeout = execute_timers ();
// Intialise the pollsets.
memcpy (&readfds, &source_set_in, sizeof source_set_in);
memcpy (&writefds, &source_set_out, sizeof source_set_out);
memcpy (&exceptfds, &source_set_err, sizeof source_set_err);
// Execute any due timers.
uint64_t timeout = execute_timers ();
// Wait for events.
struct timeval tv = {(long) (timeout / 1000),
(long) (timeout % 1000 * 1000)};