[Zope] Locks?
Benno Rice
benno@netizen.com.au
Thu, 11 Nov 1999 16:11:31 +1100
On Wed, Nov 10, 1999 at 10:54:05PM -0500, Phillip J. Eby wrote:
> At 02:47 PM 11/11/99 +1100, Stuart 'Zen' Bishop wrote:
> >
> >If you have your lock as a module level variable, I believe it will
> >work. Either have all instances sharing the same lock or store a dictionary
> >of locks. This should be fine unless you need to maintain a lock between
> >Zope restarts in which case your lock could be any object with a known id
> >in a folder (as only one thread can create the object, and the others fail),
> >and delete it to unlock.
>
> Um, that would work for human-scale locking. (E.g., I want to edit object
> X, so lock it so others can't). But for locking *within* a transaction, it
> won't necessarily work as you want. Thread A will create the object, and
> so will thread B. They both think they own the "lock", so they proceed on.
> One of them then gets rolled back at commit time due to a ConflictError.
> If you are only making changes to things in the ZODB, that's fine, since
> everything is rolled back. But if you're guarding access to say, a file or
> some other external thing, you can still collide any time up until
> transaction commit.
If I force a commit after object creation, would that work?
--
Benno Rice "No, no. We're *sweet* and
XNFP Aries Dark Subculture- *innocent* evil bastards."
friendly Internet Geek
benno@netizen.com.au "Defend your joy"