为了运行 CLIM UI,必须调用通用函数 clim:run-frame-top-level,但是此函数会阻塞,直到 UI 退出。这似乎需要通过 CLIM 顶层处理所有应用程序控制。
是否可以以不同的方式构建应用程序,以便建立 CLIM 顶层之外的控制流,并根据需要简单地与应用程序框架交互?
为了运行 CLIM UI,必须调用通用函数 clim:run-frame-top-level,但是此函数会阻塞,直到 UI 退出。这似乎需要通过 CLIM 顶层处理所有应用程序控制。
是否可以以不同的方式构建应用程序,以便建立 CLIM 顶层之外的控制流,并根据需要简单地与应用程序框架交互?
大多数支持 CLIM 的 Common Lisp 实现都可以将函数作为单独的线程运行(在 Lisp 中通常称为 PROCESS)。
在许多 Common Lisp 实现中,这个函数被称为 PROCESS-RUN-FUNCTION。请参阅 Lisp 的文档。
CLIM 本身有一个函数 MAKE-PROCESS。这是独立于实现的,并且适用于多线程 Lisp 之上的 CLIM 实现,例如 Allegro CL、LispWorks、MCL、Genera,...
类似的东西(CLIM-USER 包中的示例)。
(make-process (lambda () (run-frame-top-level ...)))
应该在自己的线程中运行顶层。
这将允许您运行多个框架,使用 REPL 等其他 Lisp 进程。