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