mit-scheme-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [MIT-Scheme-devel] non-recursive mutexes


From: Arthur A. Gleckler
Subject: Re: [MIT-Scheme-devel] non-recursive mutexes
Date: Tue, 9 Jun 2015 11:10:30 -0700

On Tuesday, June 9, 2015, Taylor R Campbell <address@hidden> wrote:
 
There is an implementation of Concurrent ML for MIT Scheme and others
at

http://mumble.net/~campbell/darcs/scheme-cml

which includes multiplexed waits on synchronous channels.  If any of
you are interested in using it, feel free to ask me questions -- or if
you'd like to pick it up and extend it, perhaps along the lines of the
TODO at <http://mumble.net/~campbell/tmp/TODO.scheme-cml>.

I remember talking with you about this long ago.  Very cool!  I've put it on my list to study.
 
But simply throwing out objects called `mutexes' does not absolve you
of the need to design the conservation laws that mutexes represent in
a complex program.

If you adopt the Erlang dogma of storing all state `immutably' in
separate processes, then each process's state has conservation laws
implied by the behaviour of that process.  If you want conservation
laws that apply to the state of two processes in aggregate, you likely
need to have an arbiter process to enforce them -- and in so doing,
you've just created three locks and a lock order between them.

I like the Erlang model very much.  If threads are cheap enough, they're almost always preferable to locks.  But there are always some high-performance cases where raw locks are necessary, I suppose. 

reply via email to

[Prev in Thread] Current Thread [Next in Thread]