【发布时间】:2014-01-22 16:12:29
【问题描述】:
我正在 sbcl 上编写一些 lisp 代码,以便在模式守护程序中运行函数。 问题是当我使用函数 sb-thred:make-thread 时,例如如下:
(sb-thread:make-thread (lambda () (progn (sleep 1) (when t (print "background action")))))
我收到以下错误消息:
Not supported in unithread builds. [Condition of type SIMPLE-ERROR]
怎么了? ...感谢您的帮助。
【问题讨论】:
-
看起来您的 SBCL 是在没有多线程支持的情况下构建的。你在运行 MacOS X 吗?如果是这样,this article 可能会对您有所帮助。
-
我对 MacPorts 了解不多,无法告诉你,但它看起来像一个基于源代码的包管理器,所以从源代码构建应该是过程的一部分,你只需要了解如何为构建指定选项。值得一提的是,我使用的 Linux 发行版(Gentoo)基于相同的原理,我可以通过设置
threadsUSE 标志使 SBCL 成为多线程。 -
听起来你是对的。我正在运行 Mac OS X 小牛。我已经使用 macports 安装了 sbcl(版本 1.1.14)。我该怎么办。也许我必须用 macports (???) 删除 sbcl,然后像你的链接中解释的那样“手动”安装 sbcl? ...我希望它存在另一种方式来做到这一点...
-
好的。我试图找出答案,我会及时通知您。
-
不要删除它(因为 SBCL 需要一个 CL 实现来引导自身)从源下载 SBCL 并修改 features.lisp (IIRC) 以添加默认禁用的线程)跨度>
标签: common-lisp sbcl background-thread