unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Dmitry Gutov <dgutov@yandex.ru>
To: Eli Zaretskii <eliz@gnu.org>
Cc: larsi@gnus.org, emacs-devel@gnu.org, yuri.v.khan@gmail.com
Subject: Re: with-url
Date: Mon, 23 Jan 2017 00:27:30 +0300	[thread overview]
Message-ID: <5bb24108-7e12-5943-f664-3f13b0e107b1@yandex.ru> (raw)
In-Reply-To: <83ziij3vby.fsf@gnu.org>

On 22.01.2017 19:36, Eli Zaretskii wrote:

> With the current implementation of concurrency, threads cannot
> usefully signal anything: if a thread raises a signal that is not
> caught, it simply dies.  And you cannot catch such a signal from
> another thread.

The idea is that it would be caught by the caller in the same thread.

> So your proposal would mean that the thread which runs the async code
> sets some variable, and the application in the main thread then
> signals an error based on that variable's value.  is that what you had
> in mind?

The model would function somehow like this:

We're in a certain thread. Elisp code calls with-url, the internals make 
a request, _suspend the current thread_, and when the request is 
complete, the low-level code updates some variable and resumes the 
thread. After that, the code in that thread checks the result of the 
request, and, depending on it, may signal an error.

If the request can't be sent for some reason, so there's no point in 
suspending the thread, the internals can signal an error right away.

Point is, the errors is signaled in the same thread that made the 
request. And the execution looks synchronous from the point of view of 
the high-level code in that thread.

Not sure how/if that would work if the request is made from the main 
thread. Maybe that kind of code would require a minor rewrite.



  reply	other threads:[~2017-01-22 21:27 UTC|newest]

Thread overview: 54+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-12-29  0:41 with-url Lars Ingebrigtsen
2016-12-29  1:06 ` with-url Stefan Monnier
2016-12-29  1:12   ` with-url Lars Ingebrigtsen
2016-12-29 16:05 ` with-url Eli Zaretskii
2016-12-29 16:35   ` with-url Lars Ingebrigtsen
2016-12-29 16:40     ` with-url Lars Ingebrigtsen
2016-12-29 16:58       ` with-url Eli Zaretskii
2016-12-29 18:52         ` with-url Lars Ingebrigtsen
2016-12-29 20:31           ` with-url Eli Zaretskii
2016-12-30 14:12             ` with-url Lars Ingebrigtsen
2016-12-30 15:23               ` with-url Lars Ingebrigtsen
2016-12-30 16:58               ` with-url Eli Zaretskii
2017-01-21 15:31         ` with-url Lars Ingebrigtsen
2017-01-21 15:33           ` with-url Lars Ingebrigtsen
2017-01-21 15:54           ` with-url Eli Zaretskii
2017-01-21 16:32             ` with-url Lars Ingebrigtsen
2017-01-21 16:40               ` with-url Eli Zaretskii
2017-01-22 15:55                 ` with-url Lars Ingebrigtsen
2017-01-22 16:39                   ` with-url Eli Zaretskii
2016-12-29 16:53     ` with-url Eli Zaretskii
2016-12-29 18:48       ` with-url Lars Ingebrigtsen
2017-01-01  1:07 ` with-url Dmitry Gutov
2017-01-03 17:47   ` with-url Stefan Monnier
2017-01-26 23:00     ` with-url Ted Zlatanov
2017-01-26 23:08       ` with-url Lars Ingebrigtsen
2017-01-27 13:49         ` with-url Ted Zlatanov
2017-01-21 15:44   ` with-url Lars Ingebrigtsen
2017-01-21 20:26     ` with-url Dmitry Gutov
2017-01-21 20:32       ` with-url Lars Ingebrigtsen
2017-01-21 20:36         ` with-url Dmitry Gutov
2017-01-21 20:49           ` with-url Lars Ingebrigtsen
2017-01-21 21:05             ` with-url Dmitry Gutov
2017-01-21 21:12               ` with-url Lars Ingebrigtsen
2017-01-21 21:16                 ` with-url Dmitry Gutov
2017-01-21 21:23                   ` with-url Lars Ingebrigtsen
2017-01-21 21:27                     ` with-url Dmitry Gutov
2017-01-21 21:37                       ` with-url Lars Ingebrigtsen
2017-01-21 21:54                         ` with-url Dmitry Gutov
2017-01-21 22:07                           ` with-url Lars Ingebrigtsen
2017-01-22 12:14                             ` with-url Yuri Khan
2017-01-22 14:46                               ` with-url Lars Ingebrigtsen
2017-01-22 15:13                                 ` with-url Dmitry Gutov
2017-01-22 16:36                                   ` with-url Eli Zaretskii
2017-01-22 21:27                                     ` Dmitry Gutov [this message]
2017-01-22 14:22                             ` with-url Dmitry Gutov
2017-01-22 14:42                               ` with-url Lars Ingebrigtsen
2017-01-21 20:34       ` with-url Lars Ingebrigtsen
2017-01-21 20:38         ` with-url Dmitry Gutov
2017-01-21 20:48           ` with-url Lars Ingebrigtsen
2017-01-21 22:25       ` with-url John Mastro
2017-01-22 16:04 ` with-url Lars Ingebrigtsen
2017-01-22 16:42   ` with-url Eli Zaretskii
2017-01-22 16:55     ` with-url Lars Ingebrigtsen
2017-01-22 23:56   ` not with-url Richard Stallman

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=5bb24108-7e12-5943-f664-3f13b0e107b1@yandex.ru \
    --to=dgutov@yandex.ru \
    --cc=eliz@gnu.org \
    --cc=emacs-devel@gnu.org \
    --cc=larsi@gnus.org \
    --cc=yuri.v.khan@gmail.com \
    /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).