[plt-scheme] STM for PLT Scheme?

From: Anthony Cowley (acowley at seas.upenn.edu)
Date: Mon Dec 14 17:11:46 EST 2009

On Mon, Dec 14, 2009 at 4:03 PM, Jeff de Vries <jdevries at pfrog.com> wrote:
> Is there an implementation of software transactional memory, similar
> to Clojure's, for PLT Scheme?
> Thanks,
> Jeff de Vries

I am not a PLT'er, but I'll offer up a tentative answer: I don't
believe there is. I have a *distributed* STM system (MVCC with some of
the same features of Clojure for dealing with write skew, etc.) that I
presented at the workshop a while back that I'm using in a number of
multi-agent projects with other robotics colleagues. This is still in
development flux, though, as I run into issues that I want better
support for. The API is so simple that it's fairly stable, but the
implementation (largely regarding what messages get sent when) is
still violently gestating the experiences I'm putting it though :)

I also use this system on single machines for multiple-process
concurrency. This is fine for using cores to execute largely parallel
workloads with sporadic concurrency, but isn't ideal for heavily
concurrent tasks (e.g. when you have a lot of data you need shared
between threads).

For a single-process STM we'd need some ability to work with multiple
threads, and perhaps this is just becoming available with the new
futures work. I'd be pretty interested in using futures to launch
parallel threads rather than my more heavyweight process startup code
even if the data sharing story wasn't all there yet. Whenever a PLT
Scheme ships with the new futures support, I'll find some time to take
a crack at that.


Posted on the users mailing list.