<div><div><div class="gmail_quote">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. In the case an old time was read but not yet written to an mvar, this could lead to the merged stream not being monotonic. At least in my C# prototype that was the case, I used many very high frequency timers to stress test the merger, and this bug popped up. I found similar code in the Reactive library, but Reactive is much more clever operationally (and semantically) than my little prototype so it might not be a problem. But if it is, I guess it can be solved by introducing another MVar to indicate &quot;I&#39;m reading time&quot;, at least I solved it in the C# prototype in that way.&nbsp;</div>
<div class="gmail_quote"><br></div><div class="gmail_quote"><br></div><div class="gmail_quote">On Sat, Feb 14, 2009 at 8:01 PM, Paul Johnson <span dir="ltr">&lt;<a href="mailto:paul@cogito.org.uk">paul@cogito.org.uk</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div><div></div><div class="Wj3C7c">I&#39;m not entirely sure what you are trying to achieve here. &nbsp;Presumably you want v to contain the (value, time) pair as soon as possible after time &quot;t&quot;. &nbsp;Of course it won&#39;t be instantaneous. &nbsp;So another thread could observe that at time (t+delta) the variable &quot;v&quot; does not yet contain (x,t). &nbsp;Is this a problem?<br>
</div></div>
<br>
Atomic transactions won&#39;t work because &quot;getCurrentTime&quot; is of type &quot;IO Time&quot;, whereas anything inside &quot;atomic&quot; has to be of type &quot;STM a&quot;.<br>
<br>
In theory you could lock out context switches by messing around with the GHC runtime, but if you are running on a multicore machine then that won&#39;t work either.<br><font color="#888888">
<br>
Paul.<br>
<br>
</font></blockquote></div><br></div></div>