mirror of https://gitlab.com/ita1024/waf.git
Enable the wrapped method to be reentrant
This commit is contained in:
parent
cadd260a9e
commit
48504f2c3d
|
@ -1,6 +1,6 @@
|
||||||
#! /usr/bin/env python
|
#! /usr/bin/env python
|
||||||
# encoding: utf-8
|
# encoding: utf-8
|
||||||
# Thomas Nagy, 2011 (ita)
|
# Thomas Nagy, 2011-2015 (ita)
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Prevents link tasks from executing in parallel. This can be used to
|
Prevents link tasks from executing in parallel. This can be used to
|
||||||
|
@ -31,8 +31,12 @@ def make_exclusive(cls):
|
||||||
ret = Task.ASK_LATER
|
ret = Task.ASK_LATER
|
||||||
if count >= MAX:
|
if count >= MAX:
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
|
self.m1_excl = getattr(self, 'm1_excl', 0) + 1
|
||||||
ret = old_runnable_status(self)
|
ret = old_runnable_status(self)
|
||||||
if ret == Task.RUN_ME:
|
self.m1_excl -= 1
|
||||||
|
|
||||||
|
if ret == Task.RUN_ME and not self.m1_excl:
|
||||||
lock.acquire()
|
lock.acquire()
|
||||||
count += 1
|
count += 1
|
||||||
lock.release()
|
lock.release()
|
||||||
|
@ -43,8 +47,11 @@ def make_exclusive(cls):
|
||||||
def run(self):
|
def run(self):
|
||||||
global count, lock
|
global count, lock
|
||||||
try:
|
try:
|
||||||
|
self.m2_excl = getattr(self, 'm2_excl', 0) + 1
|
||||||
ret = old_run(self)
|
ret = old_run(self)
|
||||||
finally:
|
finally:
|
||||||
|
self.m2_excl -= 1
|
||||||
|
if not self.m2_excl:
|
||||||
lock.acquire()
|
lock.acquire()
|
||||||
count -= 1
|
count -= 1
|
||||||
lock.release()
|
lock.release()
|
||||||
|
|
Loading…
Reference in New Issue