排队执行函数调用的最简单的 Common Lisp 习惯用法是什么?

What's the simplest Common Lisp idiom for queued execution of function calls?

例如,如果我有一个数据库,并且客户端代码以相当统一的方式查询数据库(通过包装器宏),我将如何将查询放入队列以便执行查询按顺序,下一个 运行 在最后一个完成之后。

这是针对 cl-mongo 的实验性快速解决方法,以查看它是否解决了并行请求的问题。

这听起来像是一个简单的锁可能会对您有所帮助。 bordeaux-threads:with-lock-held.

将是一个简单的用例

严格来说,由于 Common Lisp 标准没有指定任何线程功能,这个问题没有意义 :) 但是,如果您在代码中使用线程,您可以使用任何与实现无关的队列模块。默认选择可能是 lparallel. You can also use some queue provided by your implementation (many do). For instance, SBCL's sb-concurrency:queue 使用起来非常简单直接。