Merge "Allow the lock decorator to take a list"

This commit is contained in:
Jenkins
2013-09-11 23:51:46 +00:00
committed by Gerrit Code Review

View File

@@ -20,6 +20,7 @@ import functools
from taskflow import task as base
from taskflow import utils
from taskflow.utils import threading_utils
def wraps(fn):
@@ -43,6 +44,8 @@ def locked(*args, **kwargs):
@wraps(f)
def wrapper(*args, **kwargs):
lock = getattr(args[0], attr_name)
if isinstance(lock, (tuple, list)):
lock = threading_utils.MultiLock(locks=list(lock))
with lock:
return f(*args, **kwargs)