为了运行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(例如Allegro CL,LispWorks,MCL,Genera等)之上的CLIM实现上工作。
类似于(CLIM-USER软件包中的示例)。
(make-process (lambda () (run-frame-top-level ...)))
应该在自己的线程中运行顶层。
这将允许您运行多个框架,使用REPL进行其他Lisp进程等。