From: "João Távora" <joaotavora@gmail.com>
To: Thien-Thi Nguyen <ttn@gnu.org>
Cc: emacs-devel <emacs-devel@gnu.org>
Subject: Re: run-with-timer vs run-with-idle-timer
Date: Thu, 10 May 2018 13:28:20 +0100 [thread overview]
Message-ID: <CALDnm53XYB8VbCnRGz+1CQfKS4Ab9VohLA8Ve=ZTa8=_2=ZS_g@mail.gmail.com> (raw)
In-Reply-To: <87a7t74tsf.fsf@gnuvola.org>
[-- Attachment #1: Type: text/plain, Size: 1638 bytes --]
Hi Thien,
I probably should have mentioned I'm setting up an RPC protocol.
I'm using throw/catch because there are lambdas setup inside that
block (but outside the while t). Inside the lambda is the throw.
I then store these lambdas in a global CONTINUATIONS var that the
process filter looks up and calls if appropriate. The infloop breaks then.
It's much harder (and much less efficient at first sight) to do it by
polling
CONDITION, but I may be missing something. Let me know
if you want to look at a concrete example of the lambda strategy.
BTW I learned this strategy reading SLIME, I just simplified it when
lexical
binding came along. It's been working there and in other projects for
a long time.
João
On Thu, May 10, 2018 at 12:46 PM, Thien-Thi Nguyen <ttn@gnu.org> wrote:
>
> () João Távora <joaotavora@gmail.com>
> () Wed, 09 May 2018 18:34:41 +0100
>
> (while t..) spin is a common way to wait for async conditions
>
> Why not check the condition directly, i.e., s/t/CONDITION/ like:
>
> (while CONDITION
> (accept-process-output ...))
>
> That is more precise, no? Another idea, if there is some
> expected traffic, is to use ‘(accept-process-output ...)’
> directly as (or as part of) CONDITION, using its return value.
>
> --
> Thien-Thi Nguyen -----------------------------------------------
> (defun responsep (query)
> (pcase (context query)
> (`(technical ,ml) (correctp ml))
> ...)) 748E A0E8 1CB8 A748 9BFA
> --------------------------------------- 6CE4 6703 2224 4C80 7502
>
>
--
João Távora
[-- Attachment #2: Type: text/html, Size: 2791 bytes --]
next prev parent reply other threads:[~2018-05-10 12:28 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-05-09 17:34 run-with-timer vs run-with-idle-timer João Távora
2018-05-09 18:10 ` Eli Zaretskii
2018-05-09 18:17 ` Eli Zaretskii
2018-05-09 18:40 ` João Távora
2018-05-09 18:59 ` Eli Zaretskii
2018-05-09 19:15 ` João Távora
2018-05-09 19:21 ` Eli Zaretskii
2018-05-09 19:34 ` João Távora
2018-05-09 20:00 ` Davis Herring
2018-05-09 20:18 ` João Távora
2018-05-10 11:46 ` Thien-Thi Nguyen
2018-05-10 12:28 ` João Távora [this message]
2018-05-10 18:50 ` Thien-Thi Nguyen
2018-05-11 10:39 ` João Távora
2018-05-11 11:05 ` João Távora
2018-05-12 17:57 ` Thien-Thi Nguyen
2018-05-12 17:37 ` Thien-Thi Nguyen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='CALDnm53XYB8VbCnRGz+1CQfKS4Ab9VohLA8Ve=ZTa8=_2=ZS_g@mail.gmail.com' \
--to=joaotavora@gmail.com \
--cc=emacs-devel@gnu.org \
--cc=ttn@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).