Version française
Home     About     Download     Resources     Contact us    
Browse thread
Lwt_pool usage
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: -- (:)
From: Sergey Plaksin <serp256@g...>
Subject: Lwt_pool usage
lwt 2.1.1
========== Code:
open Lwt
let cococo = ref 0
let connections = Lwt_pool.create 1 (fun () -> let () =  (incr cococo) 
in return (string_of_int !cococo))
let test x dbh =
catch (fun _ ->
    Lwt_io.printl ("Start " ^ x ^ dbh) >>
    Lwt_unix.sleep 1.0 >>
    Lwt_io.printl ( "[" ^ x ^ "] A " ^ dbh) >>
    Lwt_unix.sleep 1.0 >>
    Lwt_io.printl ( "[" ^ x^ "] B " ^ dbh) >>
    Lwt_unix.sleep 1.0 >>
    Lwt_io.printl ( "[" ^ x^ "] C " ^ dbh );
)
(fun e -> Lwt_io.printl ( "[" ^ x ^ "] Cancelled " ^ dbh ^ " " ^  
Printexc.to_string e) >> Lwt.fail e)

let ct n = Lwt_pool.use connections (test n)
let t = Lwt.join [ct "t1"; ct "t2" ; ct "t3";  ct "t4"; ct "t5" ] in 
Lwt_main.run t

============ Compilation command:
ocamlfind ocamlc -o test -syntax camlp4o -package 
lwt,lwt.unix,lwt.syntax -linkpkg test.ml
====================== Output:
Start t51
[t5] A 1
[t5] B 1
[t5] C 1
Start t41
[t4] Cancelled 1 Lwt.Canceled
Start t31
[t3] Cancelled 1 Lwt.Canceled
Start t21
[t2] Cancelled 1 Lwt.Canceled
Start t11
[t1] Cancelled 1 Lwt.Canceled
Fatal error: exception Lwt.Canceled
========================

What's wrong in code? Why it raise Canceled exception?