[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Fun with async processes
From: |
tomas |
Subject: |
Re: Fun with async processes |
Date: |
Mon, 31 Jan 2022 16:56:00 +0100 |
On Mon, Jan 31, 2022 at 04:44:36PM +0100, Manuel Giraud wrote:
> Hi,
>
> Imagine, you have some async emacs processes with a sentinel each. What
> is the common emacs lisp pattern to have some kind of sentinel for all
> those processes (ie. do something when they all have finished)? I'd like
> to avoid a busy waiting like in the following example:
> --8<---------------cut here---------------start------------->8---
> (defun chatty-sentinel (process event)
> (when (string-match "finished" event)
> (message "Chatty has finished talking.")
> (kill-buffer (process-buffer process))))
An obvious approach is to have each sentinel call a "global" sentinel
which checks whether there are any processes still running (akin to your
myrun, only that it just gets called after each process's termination).
Alternatively (this is typically the approach I take) is to have one
sentinel (taking an arg) for all processes of interest. Then I call a
closure with that one parameter set to distinguish among the "clients".
In general this is a pretty natural approach, since there's usually
quite a bit of "common code" for all the sentinels which gets repeated
senselessly otherwise.
Cheers
--
t
signature.asc
Description: PGP signature