aboutsummaryrefslogtreecommitdiffhomepage
path: root/stm/asyncTaskQueue.ml
diff options
context:
space:
mode:
authorGravatar Maxime Dénès <mail@maximedenes.fr>2017-09-04 17:03:34 +0200
committerGravatar Maxime Dénès <mail@maximedenes.fr>2017-09-07 13:31:34 +0200
commit0d4ed1390eeb7ce5087ac82cdfdd01a1540946b9 (patch)
tree0701709d1e2be8b6c8c1678eaa3ae6585e237260 /stm/asyncTaskQueue.ml
parent0628fc8f0d9afaa9c88c578d1af517c87a28b74c (diff)
Fix BZ#5655 by avoiding the creation of a cleaner thread for empty queues.
While this is a good workaround, Enrico has a minimal example of the underlying issue that we will send to the OCaml team.
Diffstat (limited to 'stm/asyncTaskQueue.ml')
-rw-r--r--stm/asyncTaskQueue.ml4
1 files changed, 2 insertions, 2 deletions
diff --git a/stm/asyncTaskQueue.ml b/stm/asyncTaskQueue.ml
index 9c58df5b2..d89bf5d34 100644
--- a/stm/asyncTaskQueue.ml
+++ b/stm/asyncTaskQueue.ml
@@ -237,7 +237,7 @@ module Make(T : Task) = struct
type queue = {
active : Pool.pool;
queue : (T.task * expiration) TQueue.t;
- cleaner : Thread.t;
+ cleaner : Thread.t option;
}
let create size =
@@ -250,7 +250,7 @@ module Make(T : Task) = struct
{
active = Pool.create queue ~size;
queue;
- cleaner = Thread.create cleaner queue;
+ cleaner = if size > 0 then Some (Thread.create cleaner queue) else None;
}
let destroy { active; queue } =