diff --git a/mercurial/configitems.py b/mercurial/configitems.py
index ef3838a47503d125a45bd1dfb675f36ead62cb05_bWVyY3VyaWFsL2NvbmZpZ2l0ZW1zLnB5..be4984261611ef1165764f3f2607fd1da29fc23f_bWVyY3VyaWFsL2NvbmZpZ2l0ZW1zLnB5 100644
--- a/mercurial/configitems.py
+++ b/mercurial/configitems.py
@@ -623,6 +623,9 @@
 coreconfigitem('experimental', 'web.api.debugreflect',
     default=False,
 )
+coreconfigitem('experimental', 'worker.wdir-get-thread-safe',
+    default=False,
+)
 coreconfigitem('experimental', 'xdiff',
     default=False,
 )
diff --git a/mercurial/merge.py b/mercurial/merge.py
index ef3838a47503d125a45bd1dfb675f36ead62cb05_bWVyY3VyaWFsL21lcmdlLnB5..be4984261611ef1165764f3f2607fd1da29fc23f_bWVyY3VyaWFsL21lcmdlLnB5 100644
--- a/mercurial/merge.py
+++ b/mercurial/merge.py
@@ -1637,5 +1637,7 @@
             wctx[f0].remove()
         progress.increment(item=f)
 
-    # get in parallel
+    # get in parallel.
+    threadsafe = repo.ui.configbool('experimental',
+                                    'worker.wdir-get-thread-safe')
     prog = worker.worker(repo.ui, cost, batchget, (repo, mctx, wctx),
@@ -1641,5 +1643,6 @@
     prog = worker.worker(repo.ui, cost, batchget, (repo, mctx, wctx),
-                         actions[ACTION_GET])
+                         actions[ACTION_GET],
+                         threadsafe=threadsafe)
     for i, item in prog:
         progress.increment(step=i, item=item)
     updated = len(actions[ACTION_GET])