help-gnu-emacs
[Top][All Lists]
Advanced

[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

Attachment: signature.asc
Description: PGP signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]