2014-01-22 44 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