Hi,

On 09/30/2009 01:53 PM, Charlie Dickens wrote:
Hi,
if I have a class A that contains a boolean variable named x, is it safe
to read and change it from different threads without using locks?
Is it guaranteed that A.x will be always True or False, and not any
other weird value that that causes it to be inconsistent (assuming I
only set it to True or False) ?

The guarantee for A.x being only True or False, is independent of whether you use locks or not. It depends entirely on code that assigns to A.x.

I have a = A()
first thread does:
if a.x is True :
     pass

2nd thread does:
a.x = False

is it safe?

what if you have code like this:

Thread 1
if a.x is True:
    doSomething()

Thread 2
a.x == False

..and thread 2 executes *after* thread 1's 'if' condition but *before* doSomething(). If that behavior is acceptable in your application, you possibly don't even need a.x.


and what if x was a dict ? especially if the only values that are set in
the dictionary are simple: booleans, integers, floats, strings

Same logic applies.

hth,
cheers,
- steve

--
random non tech spiel: http://lonetwin.blogspot.com/
tech randomness: http://lonehacks.blogspot.com/
what i'm stumbling into: http://lonetwin.stumbleupon.com/
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to