当作者实现序列化器的互斥锁部分时,他们使用了一个名为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/