如何在Common Lisp中实现多线程

lev*_* li 8 lisp multithreading common-lisp

似乎有是已经有几个线程实现,因为我发现这儿有波尔多主题,手提式线程,和"The Common Lisp的烹饪书"还提供了一种方式来实现多线程,包MP,我不已知如何让它参与我的程序,我找不到这个包.

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

Dai*_*rod 7

根据 Quicklisp 11月的数据, 波尔多线程被大量使用,但我没有看到便携式线程或任何其他实现.所以我想你可以尝试一下,看看它是否符合你的需求,如果没有,就会寻找另一个实现.

我几乎没用过它,但我发现它很容易使用, API文档 也很清楚.


Vse*_*kin 7

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

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