[Python-Dev] New PEP: 319
Samuele Pedroni
pedronis@bluewin.ch
Mon, 16 Jun 2003 21:07:26 +0200
Look here, if want a (short) summary of current thinking on java sync
primitives from Java side:
<http://www.jcp.org/en/jsr/detail?id=166>
Python is already doing things alright, it already has got the higher-level
constructs.
'synchronized' makes sense on methods to have thread-safe data structures.
The rest of Java synchronization facilities should really be used to
construct higher-level tools.
I think 'with' is very likely a worthy addition. And maybe something along
the lines of:
class C(object,Synchronizable):
def meth(self,...) [syncmethod]:
...
I'm very skeptical about syncrhonize/asynchronize and implicit locks
associated/able with all objects.
regards.
At 13:55 16.06.2003 -0500, Michel Pelletier wrote:
> >> I don't see how this can possibly work. It looks like self.counter is
> >> an int, so the statement
> >> synchronize self.counter: ...
> >> must be using some particular int (say, 3) for purposes of
> >> synchronization. What sense does this make?
> >
> > Hmm good point, integer objects are a special case, they are shared and
> > are thus a bad example. Perhaps only instances should be synchronizable.
> >
> >> (and where can you store
> >> the lock, since an int is immutable and can't have new attributes
> >> created?)
> >
> > that's up to the implementation. Lock association does not effect
> > mutability.
>
>I should add that I am experimenting with this in Jython, not CPython
>which is why I said it's up to the implementation. I immagine CPython
>would add some unitialized behind-the-scenes pointer to a lock object and
>lazily initialize and lock it when the object is first sychronized. Any
>subsequent asynchronizing or sychronizing would use this lock until the
>object is garbage collected.
>
> >> On the other hand, if the thing you're locking is the counter
> >> attribute of slot (and ignoring for a moment where the lock is stored)
> >> then what if self.counter is a list but id(self.counter) ==
> >> id(globallist)?
> >
> > If they have the same id() they are the same object and thus the same
> > associated lock. the below code will be prevented from executing at the
> > same time.
>
>Ah I'm going over all the emails I got today for my next revision and
>sorry I missed where you said "attribute of the slot" the first time I
>read it. You meant, I gather, sychronizing on the slot and not the value
>it stores. Sorry to confuse things. I do not think sychronizing on the
>slot is the right thing (as I said above).
>
>Thanks for everyones comments, please keep sending them if you have them.
>
>-Michel
>
>_______________________________________________
>Python-Dev mailing list
>Python-Dev@python.org
>http://mail.python.org/mailman/listinfo/python-dev