如何从启动终端/线程分离repl?

时间:2014-11-12 21:44:52

标签: multithreading qt lisp common-lisp sbcl

我目前正在开发一个涉及通过CFFI调用QT GUI的Lisp项目。我们没有使用CommonQT,而是使用C ++构建GUI,并通过CFFI访问我们创建的库来调用它。当GUI开始时,目标是控制Lisp调用中发生的事情。可悲的是,QT窃取了主线程,我们启动GUI的repl窗口现在没用了。我们通过让QT为我们创建一个可以接受REPL命令并显示REPL结果的窗口来解决这个问题。它工作正常,但它很尴尬,能够保留原始终端repl肯定会很好。 GUI部分运行得很好,因为我正在尝试将其拆分为自己的线程,这将是让我的终端恢复的最佳时机。有任何想法吗?新线程和某些流重定向的某种组合?

1 个答案:

答案 0 :(得分:1)

您可能想尝试bourdeaux-threads,例如:

(defun start ()
  (bt:make-thread
    #'(lambda ()
        (start-my-repl)))
  (start-qt-app))