[Haskell-cafe] Re: how to implement daemon start and stop
directives?
Luke Palmer
lrpalmer at gmail.com
Thu Jan 22 07:58:11 EST 2009
On Thu, Jan 22, 2009 at 5:48 AM, Ertugrul Soeylemez <es at ertes.de> wrote:
> Luke Palmer <lrpalmer at gmail.com> wrote:
>
> > TVars are overkill here, actually, an IORef would be just fine, I
> > think.
>
> Using IORefs is generally a sign of bad style.
I totally disagree.
The disadvantage of IORefs is that they do not work together very nicely.
If you have more than one, it is very hard (impossible) to keep
multithreaded invariants between them.
But in this case, the IORef is completely encapsulated: it does not leave
the scope in which it was created. You will never have to use it with any
other IORef, because nobody else even knows it exists. The pattern is
self-contained and threadsafe with just an IORef.
A program that needs only IORefs and is threadsafe is *good* style to me,
because it means all the state is well-encapsulated (if it escaped, it would
fail to be threadsafe).
Luke
> But MVars would
> perfectly suffice here. They would be essentially the same, but without
> 'atomically'.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.haskell.org/pipermail/haskell-cafe/attachments/20090122/2e2a0af7/attachment.htm
More information about the Haskell-Cafe
mailing list