locks in threads

Aahz Maruch aahz at panix.com
Fri Nov 3 16:29:11 EST 2000


In article <3A02BBE7.E58CD78D at ira.uka.de>,
Markus von Ehr  <vonehr at ira.uka.de> wrote:
>
>I have an one thread running. The user constructs the data (read and
>write) in a complicated class structure and the thread (running every
>100 ms) only has to read this data. Are there any problems (program
>crash etc.) when I don't use variable locks? The thread only has to
>read integers out of the data structure. I don't care if I read an
>older or a newer value.

If the reader thread is only reading one variable (and never updates
that variable), you don't need a lock.  If your thread is reading
multiple variables and you don't need a consistent state between the
variables, you don't need a lock (e.g. for certain kinds of screen
updating).

But if any of the following is true, you need a lock:

* you need consistant data across multiple variables
* more than one thread writes to the variables
* you are updating a complex structure with internal state (this
explicitly includes lists and dictionaries -- there are some exceptions,
but a lock is safer unless you *really* know what you're doing)

Note that you can run into problems with references across threads, so
you need to be careful.
-- 
                      --- Aahz (Copyright 2000 by aahz at pobox.com)

Androgynous poly kinky vanilla queer het    <*>     http://www.rahul.net/aahz/
Hugs and backrubs -- I break Rule 6

"I have the heart of a child.  I keep it in a jar on my desk."  --Robert Bloch



More information about the Python-list mailing list