Ocaml 如何将Lwt与Labltk一起使用?

Ocaml 如何将Lwt与Labltk一起使用?,ocaml,tk,ocaml-lwt,Ocaml,Tk,Ocaml Lwt,如何使用Lwt编写程序并与Tk接口交互。我尝试在Lwt抢占线程中使用 let () = Lwt.async(Lwt_preemptive.detach Tkthread.thread_main); Lwt_main.run(main Tkthread.top) 其中main构造接口并运行线程更新它。这最终导致编程崩溃,并出现致命错误(无法创建小部件),然后是核心转储 将Lwt和Labltk一起使用的正确方法是什么?我从未尝试将Labltk与Lwt一起使用,但tkThread.mli明确

如何使用Lwt编写程序并与Tk接口交互。我尝试在Lwt抢占线程中使用

let () =
  Lwt.async(Lwt_preemptive.detach Tkthread.thread_main);
  Lwt_main.run(main Tkthread.top)
其中
main
构造接口并运行线程更新它。这最终导致编程崩溃,并出现致命错误(无法创建小部件),然后是核心转储


将Lwt和Labltk一起使用的正确方法是什么?

我从未尝试将Labltk与Lwt一起使用,但
tkThread.mli
明确指出:

Windows需要作业,因为您无法从 另一条线。在OSX/Aqua上显然也是如此。 即使使用X11,一些调用也需要来自主线程。 基本思想是使用异步(如果不需要结果) 或从另一个线程调用与Tk相关的函数时进行同步 (例如,螺纹顶层)。 使用sync时,请小心死锁

因此,我建议用
TkThread.sync
来包装您对LablTk的调用

您还应该在caml列表中询问这个问题。可能有人以前试过这个