global threading.Lock not locking correctly?
Laura Creighton
lac at strakt.com
Tue Feb 4 10:26:23 EST 2003
> # My logic tells me this should never print 'OOPS', yet it does.
> # Can someone tell me why? (P.S. this is simplified example code)
>
> import threading, time
>
> class testthread(threading.Thread):
>
> def run(self):
> for x in range(40):
>
> global lock
> global visitors
>
> lock.acquire
>
> visitors += 1
> if visitors > 1:
> print 'OOPS!'+str(visitors),
> else:
> print '.',
> visitors -= 1
>
> lock.release
>
> #time.sleep(0.01) #less OOPS of course
>
> visitors = 0
> lock = threading.Lock()
>
> for i in range(10):
> testthread().start()
>
> --
> http://mail.python.org/mailman/listinfo/python-list
You want lock.aquire() and lock.release()
Laura
More information about the Python-list
mailing list