如何在Common Lisp中实现多线程

时间:2011-12-24 12:33:15

标签: multithreading lisp common-lisp

似乎已经有几个线程实现,因为我注意到有Bordeaux ThreadsPortable-Threads和“Common Lisp Cook Book”也提供了一种实现多线程的方法,包mp,我不知道如何让它参与我的程序,我找不到这个包。

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

2 个答案:

答案 0 :(得分:7)

根据 Quicklisp stats for November 波尔多线程使用频繁,但我看不到便携式线程或 任何其他实现。所以我想你可以尝试一下,看看是否可以 如果没有,则满足您的需求并寻找其他实施。

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

答案 1 :(得分:7)

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

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