【问题标题】:How to implement Multi-Threads in Common Lisp如何在 Common Lisp 中实现多线程
【发布时间】:2011-12-24 12:33:14
【问题描述】:

好像已经有好几个线程实现了,我注意到有Bordeaux ThreadsPortable-Threads,《The Common Lisp Cook Book》也提供了实现多线程的方法,包mp我不知道如何将它包含在我的程序中,我找不到这个包。

问题是如何选择一个合适的多线程库来满足我的需求,因为我也是一个C程序员,它最好像pthread,但没关系,我想知道它是最常用的多线程-threads 库,或者在 Common Lisp 中进行多线程编程的常规方式是什么。

【问题讨论】:

    标签: multithreading lisp common-lisp


    【解决方案1】:

    根据 Quicklisp stats for November bordeaux-threads 被大量使用,但我没有看到可移植线程或 任何其他实现。所以我想你可以试试看 满足您的需求,如果不满足,请寻找其他实现。

    我几乎没有使用过它,但我发现它很容易使用,而且 API documentation 比较清楚。

    【讨论】:

    • 谢谢,我试试bordeaux-threads,它的API文档很清楚。
    【解决方案2】:

    实际上,Common Lisp 的事实上的线程标准是Bordeaux Threads (bt),它是不同实现的线程 API 之上的可移植层。

    mp(代表多处理)是在 LispWorks 中调用线程 API 的方式(如果我没记错的话,是 Franz CL)。您可以直接使用它(就像 SBCL 中的 sb-thread),如果您正在为某些特定实现进行开发,或者您可以依赖 bt,如果您的目标是在所有当前活动的实现中具有线程支持的可移植性(CLISP 不根本没有)。

    【讨论】:

    • 不知道你说的LispWords有没有拼写错误,我只听说过LispWorks,这是一个商业实现,也许我不能用它来开发,因为我不能负担得起 LispWorks 的高价,我会尝试 Bordeaux Threads,因为有很多人使用它,谢谢。
    • 是的,LispWorks 是商业 CL 实现之一。它还有一个有限的免费版本,称为个人版。
    猜你喜欢
    • 2017-06-08
    • 2020-08-16
    • 2020-12-18
    • 2023-03-23
    • 2013-08-10
    • 2012-11-17
    • 1970-01-01
    • 2011-06-02
    • 1970-01-01
    相关资源
    最近更新 更多