-
-
Notifications
You must be signed in to change notification settings - Fork 25
Expand file tree
/
Copy pathprogress.ml
More file actions
27 lines (22 loc) · 658 Bytes
/
progress.ml
File metadata and controls
27 lines (22 loc) · 658 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
let () =
let progress = ref 0. in
let show_progress () =
Printf.printf "%i%%\n%!" (int_of_float (!progress *. 100.)) in
let notification =
Luv.Async.init (fun _ -> show_progress ()) |> Result.get_ok in
let rec do_work total n =
if n >= total then
()
else begin
Luv.Time.sleep 1000;
progress := float_of_int (n + 1) /. float_of_int total;
ignore (Luv.Async.send notification);
do_work total (n + 1)
end
in
let finished _ =
Luv.Handle.close notification ignore;
print_endline "Done"
in
Luv.Thread_pool.queue_work (fun () -> do_work 3 0) finished;
ignore (Luv.Loop.run () : bool)