Thomas Guettler writes:
It is therefore better, to use the "_setObject" directly:
while 1: try: self._setObject(str(intid),o); break; except BadRequest: intid= intid+1
Sorry, I don't understand this. Ain't there a easier way to get something like a syncronized block in java? The standard Zope execution is easier than explicit synchronization: you do not need to synchronize. Details in a paper about ZODB3 on Zope.org.
But in rare cases, you might get a "BadRequest" exception, unless you are carefull. Assigning ids can be one such case. You can use locking in Zope, too. See "SharedResource" on <http://www.dieter.handshake.de/pyprojects/zope>
BTW, I found something in lib/python/ZODB/tests/ConflictResolution.py: The PCounter class. I think it is a persistent thread safe counter. Thank you for this hint.
Dieter