On Mon, Jan 24, 2011 at 10:04 AM, Pascal Costanza <span dir="ltr"><<a href="mailto:pc@p-cos.net">pc@p-cos.net</a>></span> wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">

<div style="word-wrap: break-word;">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.</div>

</blockquote><div><br>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).<br>

 <br></div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;"><div style="word-wrap: break-word;">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.<br>

</div></blockquote></div><br>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.<br><br>

Juanjo<br clear="all"><br>-- <br>Instituto de Física Fundamental, CSIC<br>c/ Serrano, 113b, Madrid 28006 (Spain) <br><a href="http://juanjose.garciaripoll.googlepages.com" target="_blank">http://juanjose.garciaripoll.googlepages.com</a><br>