diff --git a/mercurial/worker.py b/mercurial/worker.py --- a/mercurial/worker.py +++ b/mercurial/worker.py @@ -67,6 +67,9 @@ if pycompat.ispy3: + def ismainthread(): + return threading.current_thread() == threading.main_thread() + class _blockingreader(object): def __init__(self, wrapped): self._wrapped = wrapped @@ -100,6 +103,9 @@ else: + def ismainthread(): + return isinstance(threading.current_thread(), threading._MainThread) + def _blockingreader(wrapped): return wrapped @@ -154,7 +160,7 @@ a thread-based worker. Should be disabled for CPU heavy tasks that don't release the GIL. """ - enabled = ui.configbool(b'worker', b'enabled') + enabled = ui.configbool(b'worker', b'enabled') and ismainthread() if enabled and worthwhile(ui, costperarg, len(args), threadsafe=threadsafe): return _platformworker(ui, func, staticargs, args, hasretval) return func(*staticargs + (args,))