这是sb-thread:terminate-thread
文档的一部分:
由TERMINATE-THREAD引起的展开是异步的,这意味着 例如。线程执行
(let (foo) (unwind-protect (progn (setf foo (get-foo)) (work-on-foo foo)) (when foo ;; An interrupt occurring inside the cleanup clause ;; will cause cleanups from the current UNWIND-PROTECT ;; to be dropped. (release-foo foo))))
尽管GET-FOO如果返回true,则可能会错过致电RELEASE-FOO的机会 中断发生在cleanup子句中,例如。执行期间 RELEASE-FOO。
编写文档的方式似乎是异步堆栈展开,这意味着线程在执行unwind-protect
的cleanup子句时可能会终止线程,从而导致cleanup子句的某些部分无法执行。
是异步堆栈完全释放了这个东西还是我缺少了什么?这个定义与我目前在异步编程中的背景不符。