2014-01-22 75 views
3

我正在sbcl上运行一些lisp代码,以便在模式守护进程中运行函数。 问题是,当我使用功能SB-thred:使线程,例如如下:需要帮助运行线程SBCL

(sb-thread:make-thread (lambda() (progn (sleep 1) (when t (print "background action"))))) 

我收到以下错误信息:

Not supported in unithread builds. [Condition of type SIMPLE-ERROR] 

有什么不对? ... 感谢帮助。

+4

它看起来像你的SBCL没有多线程的支持。你在运行MacOS X吗?如果是这样,[本文](http://haminhvuong.tumblr.com/post/22109095116/compile-sbcl-with-multi-thread-enabled-on-os-x)可能会对您有所帮助。 –

+0

我不太了解MacPorts告诉你,但它看起来像一个基于源代码的软件包管理器,因此从源代码构建应该是过程的一部分,并且您只需要了解如何为构建指定选项。值得一提的是,我使用的Linux发行版(Gentoo)基于相同的原理,通过设置'threads' USE标志,我可以使SBCL成为多线程。 –

+0

听起来你是对的。我正在运行Mac OS X mavericks。我已经使用macports安装sbcl(版本1.1.14)。我该怎么办。也许我必须使用macports(???)删除sbcl,然后像链接中所解释的那样“手动”安装sbcl? ...我希望它存在另一种方式去做... – yannics

回答

3

SBCL在默认情况下在Mac OS X禁用要检查线程是否SBCL是建立与线程在REPL

(member :sb-thread *features*) 

如果不能运行,从源代码编译(使用当前SBCL)。从安装

sh make.sh --with-sb-thread 
+0

没办法。在汇编的最后这条消息:'警告!一些contrib模块没有成功构建或通过自检。失败的贡献:sb-posix' – yannics

+0

我报告过这个问题(参见[https://bugs.launchpad.net/sbcl/+bug/1272398](https://bugs.launchpad.net/sbcl/+bug/1272398 ))。 我不得不说,我没有找到正确的设置,我仍然不能用sb-thread构建sbcl。 – yannics