0

我正在使用 Clozure CL 编写应用程序。在应用程序中,我需要写几个文件,所以我为每个文件做了一个读写锁。

现在我正在尝试编写一个退出函数。它检查是否所有文件写入都已完成,然后退出。基本上它的工作原理如下:

  1. 获取所有文件读写锁
  2. 退出覆铜板

我阅读了Clozure CL 文档,但找不到像抓取写入锁这样的功能。我只能找到“grab-lock”、“with-read-lock”和“with-write-lock”。'grab-lock' 对读写锁不起作用,另外两个会自动释放锁。那么如何获取所有文件读写锁(而不是释放它们)并退出应用程序?

4

1 回答 1

1

我对 Clozure CL 的锁定机制并不是很熟悉,但我认为一些宏扩展至少可以说明一种方法:

CL-USER> (pprint (macroexpand-1 '(with-write-lock (my-lock)
                                  do-something)))

(CCL::WITH-LOCK-CONTEXT
  (LET* ((#:G350 (MAKE-LOCK-ACQUISITION))
         (#:G351 MY-LOCK))
    (DECLARE (DYNAMIC-EXTENT #:G350))
    (UNWIND-PROTECT
        (PROGN
          (CCL::WRITE-LOCK-RWLOCK #:G351 #:G350)
          DO-SOMETHING)
      (WHEN (CCL::LOCK-ACQUISITION.STATUS #:G350)
        (CCL::UNLOCK-RWLOCK #:G351)))))

我不能说这(使用ccl::with-lock-context/ccl::write-lock-rwlock)是否是在您自己的代码中执行此操作的方法,但它肯定是一种方法。

于 2014-04-16T18:20:50.937 回答