<div dir="ltr">Hi all,<div>In my case I don't really care which version of the data a thread sees, from the apps point of view the data is correct at the time it is fetched.</div><div>I was playing around with this idea and it's actually what the multi-version concurrency control technique was developed for* (more or less anyway).</div>

<div>I ended up writing <a href="http://hackage.haskell.org/package/Stasis">http://hackage.haskell.org/package/Stasis</a> to experiment with using an MVCC style in Haskell.</div><div>Docs aren't currently being built on hackage, trying to figure out why but have a look at the source on github to see what I was thinking</div>

</div><div class="gmail_extra"><br><br><div class="gmail_quote">On Tue, Jan 14, 2014 at 12:23 PM, Daniel Trstenjak <span dir="ltr"><<a href="mailto:daniel.trstenjak@gmail.com" target="_blank">daniel.trstenjak@gmail.com</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
Hi AntC,<br>
<div class="im"><br>
> Out of interest, is there some reason you don't mention TVar's?<br>
<br>
</div>The use case here seemed to be more about having shared data which is<br>
only read most of the time and updated occasionally. So the MVar seems<br>
to be a quite good fit for this.<br>
<div class="im"><br>
> I thought they are the (modern) way to "build robust systems"<br>
> with "different threads using forkIO"(?)<br>
<br>
</div>I think it really depends how your threads are accessing the shared<br>
data. Sometimes the rollbacks of a STM might hurt you more than<br>
waiting for the lock of a MVar.<br>
<br>
You could use a TVar here, but you have to be aware, that your<br>
threads might operate on outdated data - if one thread is currently<br>
updating the data - and this might be an issue for your system.<br>
<br>
If I'm getting it correctly, then a MVar can't be read by mutliple<br>
threads at once, even if all threads are only reading from it.<br>
That's an advantage of the TVar.<br>
<br>
So thinking again about it, having only occasionally writes from<br>
favorably only one thread and reads from multiple threads, then indeed<br>
the TVar might be a quite good fit for this use case.<br>
<br>
<br>
Greetings,<br>
Daniel<br>
<div class="HOEnZb"><div class="h5">_______________________________________________<br>
Beginners mailing list<br>
<a href="mailto:Beginners@haskell.org">Beginners@haskell.org</a><br>
<a href="http://www.haskell.org/mailman/listinfo/beginners" target="_blank">http://www.haskell.org/mailman/listinfo/beginners</a><br>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br>Courtney Robinson<br><a href="mailto:courtney@crlog.info" target="_blank">courtney@crlog.info</a><br><div><div><a href="http://crlog.info/" target="_blank">http://crlog.info</a></div>

<div>07535691628 (No private #s)</div></div>
</div>