
I'm not sure what you mean with "Time on different cores does not progress
monotonically". Time could come from a dedicated clock device. E.g. in the
broadcast television sector a time signal is distributed across all hardware
components to keep them all in sync within some margin, or you could use the
clock from a local sound card, etc. I guess each operating system provides
such a clock.
I'm also not sure about the performance penalty. One would surely get a
penalty with a global lock on the clock (serializing time), but I think the
problem can be solved with a local lock per stream. But I would have to
think about this more before claiming such things :-)
Maybe you could elaborate a bit more on your claims?
On Sun, Feb 15, 2009 at 5:38 AM, Bryan O'Sullivan
2009/2/14 Peter Verswyvelen
If you have two streams of time/value pairs - using MVars as write-once sampling variables - and both streams are fed from another thread (e.g. timers firing), and you want to merge these two streams into a single stream with monotonic time stamps, then you want to be able to check if at time t an occurrence exists in a stream.
What you want to do isn't actually achievable on multi-processor machines without some form of mutual exclusion. Time on different cores does not progress monotonically, and you'll pay an enormous performance penalty to do what you want to do (the nature of which is somewhat unclear).