Scoped Lock
Daniel Dittmar
daniel.dittmar at sap.com
Mon Jan 5 07:40:01 EST 2004
Marco Bubke wrote:
> This does not look nice to me. There should be something me easily.
> Maybe that:
>
> def do_something() lock(mutex):
> #this stuff is locked by the mutex
>
> So you don't forget to release the lock.
You could create a class that locks the mutex in the constructor and unlocks
it in the __del__ method.
class ScopedLock:
def __init__ (self, mutex):
self.mutex = mutex
mutex.acquire()
def __del__ (self):
self.mutex.release ()
use as
def do_something():
lock = ScopedLock (mutex)
# do something
# lock will be automatically released when returning
This works only in the current implementation of CPython where local
variables are usually (*) deleted when they fall out of scope.
(*) usually: unless they are returned or added to another object
And I guess with metaclasses, you can achieve something like Java's
synchronized methods.
Daniel
More information about the Python-list
mailing list