Multithreading 在Mac、Windows和Linux上使用CFFI和线程支持的通用Lisp实现?

Multithreading 在Mac、Windows和Linux上使用CFFI和线程支持的通用Lisp实现?,multithreading,common-lisp,hunchentoot,Multithreading,Common Lisp,Hunchentoot,目标:安装Hunchentoot并能够将Hunchentoot作为后台线程运行 我就是这么做的: 安装公共Lisp 安装Quicklisp (ql:quickload“hunchentoot”) (hunchentoot:start(生成实例'hunchentoot:acceptor:port 4242)) 最后一个命令应该是启动Hunchentoot,然后返回到解释器以获取更多常见的Lisp表单 对于CLISP、SBCL、ABCL、ECL和CCL,我得到两个结果之一: Hunchentoot

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

我就是这么做的:

  • 安装公共Lisp
  • 安装Quicklisp
  • (ql:quickload“hunchentoot”)
  • (hunchentoot:start(生成实例'hunchentoot:acceptor:port 4242))
  • 最后一个命令应该是启动Hunchentoot,然后返回到解释器以获取更多常见的Lisp表单

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

    • Hunchentoot的依赖波尔多线程无法安装
    • hunchentoot:start
      挂起。网页永远不会加载,也永远不会被删除

    AFAIK CLISP和SBCL的win32实现不支持多线程,而Hunchentoot依赖于此功能(依赖于波尔多线程)。Hunchentoot与Clozure Common Lisp配合良好。

    LispWorks是Hunchentoot的设计平台,可用于所有三种操作系统。

    提供CCL、CFFI、threads、Emacs和SLIME的工作副本。Quicklisp和Hunchentoot工作得很好。目前还没有安装程序,但最糟糕的是:)

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

    (find :sb-thread *features*)
    
    启用线程:使用预编译的SBCL,从源代码处编译最新版本,但请注意有关启用线程的安装说明。您将创建一个名为“CustomizeTargetFeatures.lisp”的文件,以包含说明中给出的lambda表达式。(提示:从分离的“屏幕”内编译,重定向到日志文件或类似文件,因为终端窗口可能会受到i/o限制,并实际降低编译速度。)

    为Linux预编译的SBCL已启用线程,但为MacOSX、FreeBSD和Windows预编译的SBCL未启用线程。这可能会随着将来的版本而改变


    我已经确认,在MacOSX 10.6.6/x86-64上使用当前版本的SBCL(编译以启用线程)和QuickLisp,访问时应该会得到“Hunchentoot默认页面”,其中“Hunchentoot 1.1.1(SBCL 1.0.46)位于localhost:4242”。

    QuickLisp和Hunchentoot都有邮件列表,这将是第一个支持地址。