diff options
author | Maxime Dénès <mail@maximedenes.fr> | 2017-09-04 17:03:34 +0200 |
---|---|---|
committer | Maxime Dénès <mail@maximedenes.fr> | 2017-09-07 13:31:34 +0200 |
commit | 0d4ed1390eeb7ce5087ac82cdfdd01a1540946b9 (patch) | |
tree | 0701709d1e2be8b6c8c1678eaa3ae6585e237260 /stm/asyncTaskQueue.ml | |
parent | 0628fc8f0d9afaa9c88c578d1af517c87a28b74c (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.ml | 4 |
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 } = |