为了运行CLIM UI,必须调用泛型函数clim:run-frame-top-level,但是此函数会阻止,直到UI退出。这似乎要求所有应用程序控制都通过CLIM顶级处理。
是否可以以不同方式构建应用程序,以便建立CLIM顶级之外的控制流,并根据需要与应用程序框架进行简单交互?
答案 0 :(得分:3)
支持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 ...)))
应该在自己的线程中运行toplevel。
这将允许您运行多个帧,使用REPL进行其他Lisp进程等。