异步堆栈展开是什么意思?

时间:2018-11-22 09:08:03

标签: multithreading common-lisp sbcl

这是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子句的某些部分无法执行。

是异步堆栈完全释放了这个东西还是我缺少了什么?这个定义与我目前在异步编程中的背景不符。

0 个答案:

没有答案