lisp - SICP Section 3.4中mutex的实现

标签 lisp scheme mutex sicp

当作者实现序列化器的互斥锁部分时,他们使用了一个名为cell 的列表。但是列表只包含一个元素,那么为什么不直接使用变量呢?

最佳答案

因为变量不是可以传递给另一个函数的一流值。在 3.4 中,作者实现了一个 make-mutex 函数,它使用 clear! 作为辅助函数,它接受一个单元格。如果单元格由可变变量表示,则必须在 make-mutex! 中定义 clear! 以关闭该变量。 test-and-set! 辅助函数也是如此。

他们也可以使用,比如说,一个盒子而不是一个 cons 单元。

关于lisp - SICP Section 3.4中mutex的实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8556477/

相关文章:

lisp - 从 Nyquist 中的字符串中删除字符

scheme - 如何在没有空格的方案中使用串联

c - 在用户级线程库中实现互斥量

linux-kernel - Linux 中的 "lock"方法保证原子性?

scheme - 为什么 make-counter 过程包含两个 lambda 定义?

java - 等待 clojure 中的按键

lambda - 带有 Y 组合器的列表函数不递归,为什么?

c++ - 变量的线程保护

programming-languages - 有人知道如何获得 Linux 的 SAM76 源代码吗?

audio - 如何在 Racket/gui 中重复播放歌曲?