我是 lisp 编程的新手。我正在使用 sbcl。在程序线程的一部分中创建为-
(sb-thread:make-thread
(lambda ()
(progn
(sleep 0)
(setf c (+ a b))
(print "ADDITION:")
(print c))))
我不明白 lambda()
和 progn(sleep 0)
的作用,以及为什么它写在 sb-thread
括号内?
最佳答案
sb-thread:make-thread
在新创建的线程中调用一个函数。
(lambda ()
(progn
(sleep 0)
(setf c (+ a b))
(print "ADDITION")
(print c)))
是一个匿名函数。反过来 progn
创建一个程序 block (在这种情况下不必要,因为 lambda 主体是隐式 progn)并且 (sleep 0)
可能用作“请”在此处调用调度程序”(它本质上是一个空操作,休眠 0 秒)。
关于sbcl 中的多线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29674836/