On Jul 7, 2009, at 16:28 , Alessio Stalla wrote:
On Tue, Jul 7, 2009 at 3:49 PM, Ville Voutilainenville.voutilainen@gmail.com wrote:
On Tue, Jul 7, 2009 at 4:30 PM, Erik Huelsmannehuels@gmail.com wrote:
I propose that we introduce a WITH-EXCLUSIVE-ACCESS form in the EXT package, which takes 1 argument (the second value) and a body (the third value). The form makes sure that the body is evaluated as if it had been called with: synchronized (arg1) { body-to-evaluate; } Except that it implements this in Lisp. This way, our Lisp<>Java interoperability would increase. It would also be an efficient way to guarantee exclusive access when modifying a cross-thread shared resource (such as generic functions). Comments?
Sounds good, although WITH-EXCLUSIVE-ACCESS isn't very descriptive to me, I'd go for WITH-THREAD-LOCK. (not WITH-LOCK, because there are many kinds of locks). Just my 0.02. ;)
Do you mean so that Lisp code could be synchronized with Java code on the same object lock? That would be great. It'll need also a Lisp interface to wait(), notify() and company, but this is trivial. About the name, why not SYNCHRONIZED or SYNCHRONIZED-ON or WITH-SYNCHRONIZED-BLOCK or something like those? It's closer to Java terminology that way. But, any of the proposed names are fine by me.
I second that. SYNCHRONIZED-ON or variants look better than the WITH- variants. Also, please do not make the EXT package a kitchen sink. Java thought us to (at least) try to separate things in appropriate namespaces. Choose a special threading-related package name where these thing should be put.
Cheers
-- Marco Antoniotti