Skip to content
Snippets Groups Projects
Commit 28dc1b1c authored by Loïc Correnson's avatar Loïc Correnson
Browse files

[kernel] optimise Db.yield a bit

parent b237c7ee
No related branches found
No related tags found
No related merge requests found
...@@ -1092,18 +1092,31 @@ let with_progress ?debounced trigger job data = ...@@ -1092,18 +1092,31 @@ let with_progress ?debounced trigger job data =
with exn -> with exn ->
off_progress d ; trigger () ; raise exn off_progress d ; trigger () ; raise exn
let yield_once () =
match !pending with
| [] -> ()
| rjobs ->
pending := [] ;
List.iter (fun f -> f()) (List.rev rjobs)
let yield_daemons () =
match !daemons with
| [] -> ()
| ds ->
let t = Unix.gettimeofday () in
List.iter (fun d ->
if t > d.next_at then
begin
d.next_at <- t +. d.debounced ;
d.trigger () ;
end
) ds
let yield () = let yield () =
let jobs = List.rev !pending in begin
pending := [] ; yield_once () ;
List.iter (fun f -> f()) jobs ; yield_daemons () ;
let t = Unix.gettimeofday () in end
List.iter (fun d ->
if t > d.next_at then
begin
d.next_at <- t +. d.debounced ;
d.trigger () ;
end
) !daemons
let flush () = let flush () =
List.iter (fun d -> d.next_at <- 0.0) !daemons ; List.iter (fun d -> d.next_at <- 0.0) !daemons ;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment