sbcl 中的多线程

标签 multithreading lisp common-lisp sbcl

我是 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/

相关文章:

java - Spring Boot 共享线程

c++ - 我应该使用单例设计模式还是其他方式实现线程安全队列?

lisp - Common Lisp 中 langutil 的问题 - 如何标记文件

common-lisp - Lisp-遍历列表并替换值

lisp - 使用 hunchentoot 我无法生成网页

java - Wildfly 增加线程数

macos - 刚习惯在 OS X 上的 emacs 中进行 paredit - 为什么 C-) 不起作用?

variables - 计划和设置!

lisp - LISP 中的动态构建函数

swift - 是否有可能使多线程代码效率更高? (双循环 O(n^2))