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.