如何在 ABCL 中生成背景(命名)子进程/线程?也就是说,我想生成子进程(或线程)以在后台运行,并将顶级评估留给其他处理。
使用 (apropos 'process/thread) 我发现了像下面列出的那些未记录的函数,但我无法弄清楚语法。我正在寻找要遵循/修改的运行示例代码。我似乎已经使用以下 make-process 函数创建了一个进程,但是当我尝试杀死它时出现错误,它在前台运行。ABCL 手册中没有关于 make-process 的条目。列出了 MAKE-THREAD,但未记录。
ABCL 手册中列出的带有“未记录”名称的所有功能的文档/示例在哪里?(还有那些恰到好处的发现?)
作为一个单独但相关的问题,是否有一个在线的 ABCL 特定运行代码示例存储库,涵盖了此类边缘案例问题?
在其他 common-lisps 中,我会使用如下函数:
(activate-process *initial-process*)
或者
#+(:and MULTITASKING :lucid)
(defun mpd (&optional (reinit nil))
(user::make-process :name "Pdraw-proc" :function #'pd::pdraw :args (list reinit)))
在 ABCL 中,我糊里糊涂地走得不远:
CL-USER> (setf uu (make-thread (my-reader))) <-- runs at the top level / hogs read loop
CL-USER> (setf jj (system::%make-process (foo)))
#S(SYSTEM:PROCESS :JPROCESS 3 :INPUT NIL :OUTPUT NIL :ERROR NIL)
CL-USER> jj
#S(SYSTEM:PROCESS :JPROCESS 3 :INPUT NIL :OUTPUT NIL :ERROR NIL)
SYSTEM::MAKE-PROCESS (fbound)
SYSTEM::%PROCESS-KILL (fbound)
SYSTEM::%MAKE-PROCESS (fbound)
和
THREADS:MAKE-THREAD (fbound)
THREADS:DESTROY-THREAD (fbound)
和
(make-two-way-stream ...)
[可能为线程创建必要流的语法/示例?]
提前感谢您的指针或代码。