sbcl中的多线程

use*_*907 2 lisp multithreading sbcl common-lisp

我是lisp编程的新手.我正在使用sbcl.在程序线程的一部分创建为 -

(sb-thread:make-thread
  (lambda ()
    (progn
      (sleep 0)
      (setf c (+ a b))
      (print "ADDITION:")
      (print c))))
Run Code Online (Sandbox Code Playgroud)

我没有得到什么lambda()progn(sleep 0)做什么,为什么它写在sb-thread括号内?

Vat*_*ine 6

sb-thread:make-thread 采用函数来调用新创建的线程.

(lambda ()
   (progn
      (sleep 0)
      (setf c (+ a b))
      (print "ADDITION")
      (print c)))
Run Code Online (Sandbox Code Playgroud)

是一个匿名函数.反过来progn创建一个程序块(在这种情况下不一定,因为lambda体是一个隐含的预测)并且(sleep 0)可能被用作"请在这里调用调度程序"(它本质上是一个无操作,睡眠0秒).