我正在使用Clozure CL编写应用程序。在应用程序中,我需要编写几个文件,因此我为每个文件进行了读写锁定。
现在,我正在尝试编写退出函数。它检查所有文件写入是否均已完成,然后退出。基本上,它的工作方式如下:
我阅读了Clozure CL文档,但是找不到任何功能,例如grab-write-lock。我只能找到“抓锁”,“读锁”和“写锁”。'grab-lock'不适用于读写锁,另外两个将自动释放锁。那么,如何获取所有文件的读写锁(不释放它们)并退出应用程序?
我对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
)是否是在您自己的代码中执行此操作的好方法,但肯定是执行此操作的方法。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句