On Mon, Jan 24, 2011 at 10:04 AM, Pascal Costanza pc@p-cos.net wrote:
What is important in an SMP library is the kinds of synchronization primitives you get. LispWorks provides both very high-level synchronization via mailboxes, which are extremely convenient to use and cover 80-90% of all cases, in my experience. On top of that, LispWorks provides the usual mutual exclusion via locks, but also more fine-grained synchronization primitives, like read/write (shared) locks, compare-and-swap / atomic operations, barriers, and ordering of memory accesses. The API is very well designed and covers a lot of practically occurring cases.
What you say sounds reasonable and also feasible for any implementation out there. In particular ECL already provides read/write locks, the usual locks and will soon export compare-and-swap and atomic operations using libatomic-ops (which is part of ECL already, as it is used by the garbage collector).
If you are looking for inspiration, I think the LispWorks documentation is available for free on their website. There is also a personal edition of LispWorks 6.0 that you can play with.
Thanks for the pointer. Obviously, I would rather refrain from using the personal edition, as there might be some conflicts :-) but the documentation seems inspiring and terribly simple.
Juanjo