在Mac,Windows和Linux上使用CFFI和线程支持的Common Lisp实现?

时间:2011-02-28 07:12:40

标签: multithreading common-lisp hunchentoot

目标:安装Hunchentoot并能够将Hunchentoot作为后台线程运行。

这就是我的所作所为:

  1. 安装Common Lisp。
  2. 安装Quicklisp。
  3. (ql:quickload "hunchentoot")
  4. (hunchentoot:start (make-instance 'hunchentoot:acceptor :port 4242))
  5. 最后一个命令应该启动Hunchentoot,然后返回解释器以获取更多Common Lisp表单。

    对于CLISP,SBCL,ABCL,ECL和CCL,我得到两个结果之一:

    • Hunchentoot的依赖性Bordeaux Threads无法安装。
    • hunchentoot:start挂起。网页永远不会加载,永远不会加载404。

4 个答案:

答案 0 :(得分:1)

AFAIK CLISP和SBCL的win32实现不支持多线程,而Hunchentoot依赖于此功能(依赖于Bordeaux Threads)。 Hunchentoot适用于Clozure Common Lisp。

答案 1 :(得分:1)

LispWorks是Hunchentoot设计的平台,可在所有三个操作系统上使用。

答案 2 :(得分:1)

Lispbox提供了CCL,CFFI,线程,Emacs和SLIME的工作副本。 Quicklisp和Hunchentoot运作良好。还没有安装程序,但是有用的东西可以工作:)

答案 3 :(得分:0)

无论操作系统如何,如果在SBCL中返回nil,您将需要启用线程:

(find :sb-thread *features*)

启用线程:使用预编译的SBCL,从源代码编译最新版本,但请注意启用线程的INSTALL指令。您将创建一个名为“customize-target-features.lisp”的文件,以包含说明中给出的lambda表达式。 (提示:从'screen'中分离编译,重定向到日志文件或类似文件,因为终端窗口可能会受到i / o限制,实际上会减慢编译速度。)

为Linux预编译的SBCL启用了线程,但是为MacOSX,FreeBSD和Windows预编译时没有启用线程。这可能会随着将来的版本而改变。

我已经确认使用当前版本的SBCL(已编译为启用线程)和MacOSX 10.6.6 / x86-64上的QuickLisp,您应该使用“Hunchentoot 1.1.1(SBCL 1.0)获取”Hunchentoot默认页面“ .46)在localhost:4242“访问http://localhost:4242/时。