Что означает асинхронное разматывание стека? - PullRequest
0 голосов
/ 22 ноября 2018

Вот часть документа 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))))

, может пропустить вызов RELEASE-FOO, несмотря на то, что GET-FOO вернул true, если прерывание происходит внутри предложения очистки, например.во время выполнения RELEASE-FOO.

Документация написана таким образом, что кажется, что разматывание асинхронного стека означает, что завершение потока может произойти в тот момент, когда поток выполняет условие очистки unwind-protect, вызываянекоторые части предложения очистки не будут выполнены.

Асинхронный стек разворачивает именно эту вещь или я что-то упустил?Это определение не совсем соответствует моему текущему опыту в асинхронном программировании.

...