我无法使用 lwt 进行数据库访问。我应该将它包含在一个线程中吗?如何?或者创建一个返回'a lwt
值的新线程?如果是这样,如何处理该值?
也是如此Printf.eprintf
,它似乎也被 lwt 阻止了。所以我改用 Lwt_io。但为什么 lwt 会阻止常规 io?
我所拥有的是一个简单的数据库请求,例如Db.update session
. 它在一个Lwt_main.run main
函数内。所有这些都在一个 CGI 脚本中(没关系,数据库访问工作正常,直到我开始使用 lwt 命令)。
如果需要,我可以给你更多代码。
问候
Olle
编辑
let main sock env =
(* code omitted *)
Gamesession.update_game_session env#db game_session_connected;
(* code omitted *)
Lwt_main.run (main sock_listen env)
编辑 2
这是解决方案:
Lwt_preemptive.detach (fun () -> Db.call) ()