From: cliffc <cli...@acm.org>
Date: Sat, 24 May 2008 05:11:11 -0700 (PDT)
Local: Sat, May 24 2008 8:11 am
Subject: Re: STM criticism from Azul Systems
The problem with manual locking - and it applies equally well to
transactions - is that the there's no name-space-control over what needs to be locked/transacted. The failure people have with locks (and limited experience with transactions) is that they can't properly name their shared variables. They *think* they can, until we start looking hard, and then we keep finding more... and more that need to be locked/transacted atomically. In short, people don't know where to put the lock/unlock or where to bound the transactional region. Having said that, locks have some advantages over transactions:
Requiring shared variables to have a special syntax, ala Ref, is a big
As evidence of that, suppose you replace your STM implementation with
Summary: STM doesn't solve the Big Problem (lack of name-space
Cliff
On May 23, 6:00 pm, Rich Hickey <richhic...@gmail.com> wrote:
> One could as generically argue that systems with manual locking are
> usually broken, and therefore their behavior itself, never mind their > performance, is unpredictable. That's been my experience with manual > locking in the hands of mere mortal developers. It can be as difficult > to understand the behavior of any single manually-concurrent program > as to understand the performance characteristics of an STM. In the > latter case, at least the STM is handling correctness for you, and all > users of the same STM can share knowledge (and bug fixes and > performance improvements), vs each application being its own Gordian > knot. And in any case in which the STM is failing you performance- > wise, you can opt out and use manual locks outside of transactions. To > the extent you can use it, STM can drastically reduce the complexity > of a system. > I'm wary of unifying the discussion of concurrency with one about
> It would be no problem to instrument the Clojure STM references with
> STM designs differ from one another quite a bit, so any general
> Clojure encourages the use of immutable persistent data structures,
> As far as I know, Clojure is the first STM that uses snapshot MVCC,
> Once you get to record-level STM granularity, like Clojure's, it's
> I don't consider STM performance any more or less of a research
> And of course, neither STM, nor any other mechanism, is a panacea.
> Rich
> On May 23, 2:13 pm, cliffc <cli...@acm.org> wrote:
> > You got it - under load, performance is unpredictable.
> > With locks, you can see which locks are loaded, generally figure out
> > Not so (at least not yet) with STM. I've talked to a few people
> > Cliff
> > On May 23, 11:07 am, "Raoul Duke" <rao...@gmail.com> wrote:
> > > > Are explicit locking designs free from such anomalies? I wouldn't think
> > > paraphrase: the behaviour under load gets weird and tricky.
> > > well, in some ways maybe that doesn't happen with locks: the question
> > > tho i believe Rich previously said that Clojure would actually have a
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
| ||||||||||||||