我正在尝试创建一个使用let*
. 当我尝试运行它时,子进程处于 [reset] 状态。如果我使用解决方法并使用let
,则线程以 [active] 开始,一切正常。
我对这种行为感到困惑,并希望得到解释。
(defparameter *g* 1)
(defparameter *res-list* nil)
(defun tester ()
(let ((res *g*))
(push res *res-list*)))
CL-USER> (ccl:process-run-function "test" 'tester)
#<PROCESS test(4856) [Active] #x3020036E30AD>
CL-USER> *res-list*
(1)
到目前为止一切正常。但是如果我将 let 更改为 let*,我会得到一个 [reset] 状态,但是子线程中的代码会被执行。
(defun tester ()
(let* ((res *g*))
(push res *res-list*)))
CL-USER> (ccl:process-run-function "test" 'tester)
#<PROCESS test(4862) [Reset] #x3020036BCF2D>
CL-USER> *res-list*
(1 1)
如果有人能给我指出一个可以解释不同状态的资源,我也会很感激。
谢谢。