ABCLでバックグラウンド (名前付き) サブプロセス/スレッドを生成するにはどうすればよいですか? つまり、サブプロセス (またはスレッド) を生成してバックグラウンドで実行し、トップレベルの評価を他の処理のために解放したままにします。
(apropos 'process/thread) を使用すると、以下にリストされているような文書化されていない関数が見つかりましたが、構文がわかりません。フォロー/変更する実行中のサンプルコードを探しています。以下のmake-process関数でプロセスを作成したようですが、killしようとするとエラーになり、フォアグラウンドで実行されてしまいます。make-process については、ABCL のマニュアルには記載がありません。MAKE-THREAD はリストされていますが、文書化されていません。
この「文書化されていない」指定で ABCL マニュアルにリストされているすべての関数の文書/例はどこにありますか? (また、aproposで見つかったものは?)
別の関連する問題として、これらのようなエッジケースの質問をカバーする 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 ...)
[スレッドに必要なストリームを作成するための構文/例?]
ポインタまたはコードを事前にありがとう。