如何在Common Lisp中实现多线程

9
看起来已经有几个线程实现了,我注意到有Bordeaux Threads, Portable-Threads,《The Common Lisp Cook Book》也给出了一种实现多线程的方法,这个包mp,但我不知道如何将其纳入我的程序中,我找不到这个包。
问题是我该如何选择一个合适的多线程库来满足我的需求,作为一名C程序员,最好像pthread一样,但也无所谓,我想知道最常用的多线程库是哪一个,或者在Common Lisp中进行多线程编程的常规方式是什么。
2个回答

7
根据Quicklisp stats for November,bordeaux-threads被广泛使用,但我没有看到portable-threads或其他实现。因此,我猜你可以尝试并查看它是否符合你的需求,如果不符合,可以寻找另一个实现。
我几乎没有使用过它,但我发现它很容易使用,API documentation也非常清晰。

谢谢,我会尝试使用bordeaux-threads,它的API文档非常清晰。 - levin li

7
实际上,对于Common Lisp来说,事实上的线程标准是Bordeaux Threads (bt),它是在不同实现的线程API之上的可移植性层。在LispWorks中,线程API被称为mp(代表多处理),如果我没记错的话,Franz CL也是这样。如果你正在为某个特定的实现开发,你可以直接使用它(就像在SBCL中使用sb-thread一样),或者如果你的目标是跨所有当前支持线程的实现的可移植性,那么你可以依赖于bt(CLISP根本没有它)。

我不确定你是否说错了LispWords中的拼写错误,我只听说过商业实现的LispWorks,也许我不能用它进行开发,因为我承受不了高昂的LispWorks价格,我将尝试使用Bordeaux Threads,因为很多人都在使用,谢谢。 - levin li
是的,LispWorks是商业CL实现之一。它还有一个名为个人版的免费版本,但功能受到限制。 - Vsevolod Dyomkin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接