[zeromq-dev] zmq::poll timeout returns immediately on MacOS/X 10.5
sustrik at 250bpm.com
Fri Jun 11 07:16:35 CEST 2010
Matt Weinstein wrote:
> What would the kernel do? :)
Kernel would trade performance for POSIX-compliance.
At least I hope so :)
> One tack might be one condition variable per user thread, and a high-
> priority service thread running a wake-up queue (pointing at a list of
> unrolled lists...)?
Let me explain the problem: To do exact timouts, zmq_poll would have to
measure exact time (gettimeofday) at the beginning of the function. If
it doesn't know the time it was invoked, it cannot terminate at right time.
This time measurement is the impact I am speaking of. Although it may
seem negligible, in a tight loop it can decrease overall throughput (I'm
guessing here) by ~30%.
One way to solve the problem would be to use some fast mechanism (such
as rdtsc on x86/64) to find out whether noticeable time has elapsed
since last call to zmq_poll (say at least 1ms), call gettimeofday only
if it did, and use the previous time measurement if it didn't.
Of course, this would leave non-x86 platforms with the full performance
Anyone volunteers to give it a try?
More information about the zeromq-dev