[Zope] threading boundary="------------89058EF200FCB3C4EA85CC71"

Dieter Maurer dieter@handshake.de
Mon, 7 Aug 2000 20:25:49 +0200 (CEST)


Nicholas Lo writes:
 > According to Amos' How-To: Thread Safety in Zope 2, what is mutable
 > global or shared variables?? What is the scope of such global variables?
 > Zope wide? module wide?
I did not read this How-To. Thus, be careful with my explanation.

A mutable object is one that can change its value over time.
E.g. a list is mutable (you can "append", "insert", "delete" elements)
while a tuple is not.

If several threads concurrently access a mutable object
(or a mutable binding, i.e. a name (variable) is bound to
different values over time), results can be quite unpredictable.

Usually, you would use a synchronization mechanism to
control access to objects. See the Python modules
"thread" and "threading" for functions available for this
purpose.

 > If global variable is not permitted, how can I approach thread
 > programming in Zope? Without global variables, how can I control
 > threads?
You can use global variables -- provided you know what you
do and ensure proper synchronization.

You may want to look at "ZODB.Transaction.get_transaction"
to learn how Zope itself manages its transaction context
in view of serveral threads.



Dieter


PS: I do not like MIME messages in this list.
    The list software strips MIME headers and my mail reader is
    therefore unable to decode the message.