grocery_stocker wrote: > When I run the following... > > #!/usr/bin/python > > import time > import thread > import threading > > def get_first_part(string, lock, sleeptime, *args): > global counter > lock.acquire() > try: > counter = counter + 1 > data = counter > print "%s value is %d" % (string, counter) > time.sleep(sleeptime) > finally: > lock.release() > return data
> def get_both_parts(string, lock, sleeptime, *args): > global first, second > lock.acquire() > try: > first = get_first_part() > second = get_second_part() > print "%s values are %d and %d" % (string, first, > second) > time.sleep(sleeptime) > finally: > lock.release() > return first, second > How come RLock isn't working in this example? When get_both_parts() acquires the lock it invokes get_first_part() which tries to acquire the lock. This fails because get_both_parts() does not release the lock until after get_first_part() has finished... Peter -- http://mail.python.org/mailman/listinfo/python-list