From: David Kastrup <dak@gnu.org>
Cc: emacs-devel@gnu.org
Subject: Re: What's the problem? (Was: Are there plans for a multi-threaded Emacs?)
Date: 08 Dec 2003 21:56:56 +0100 [thread overview]
Message-ID: <x5zne36naf.fsf@lola.goethe.zz> (raw)
In-Reply-To: <4nu14b6q33.fsf@collins.bwh.harvard.edu>
Ted Zlatanov <tzz@lifelogs.com> writes:
> On 08 Dec 2003, luke@bluetail.com wrote:
>
> > What's the biggest problem that threads are intended to solve?
>
> Note I don't claim these can't be rewritten in a concurrent fashion.
> I simply gave examples that could stand to be improved. The
> majority of examples are in Gnus, because that's the Elisp
> application I know best.
Have you already done the obvious thing of setting gnus-asynchronous
to a non-nil value? That's the least one would expect from somebody
that wants parallelism that badly.
> - auto-save on a slow file system or through Tramp
So that if autosave starts saving a file and is half through when I
decide that the first half of the file is junk I won't need and delete
it, Emacs finds itself having saved more than enough material and
stops writing, never saving the remaining _important_ part of the
file?
You can't just throw in parallelism and hope that things will work
out somehow.
> - Gnus mail retrieval, summary thread building, registry lookups
Most of those can be controlled with gnus-asynchronous and
subordinate variables.
> - independent hashtable lookups and calculations in parallel would
> be a very nice improvement in themselves,
Why? What time-critical code performs them frequently?
> > People are writing concurrent programs in Elisp today. Most
> > programs interacting with external processes and sockets do so
> > without blocking Emacs. Can't we all just do the same?
>
> There seems to be interest in a real multithreading solution, be it
> cooperative or preemptive, or an event-driven API.
The interest I have heard voiced so far has not been overly correlated
with intimate technical knowledge about the details involved and the
actual differences this would make for everyday work.
> If it appears from this thread that I have a particular interest in
> a radical rewrite of Emacs, that is not true. It just seems to me,
> because of the tight internal coupling of Emacs functions and
> variables, that lightweight threads would be a good choice for the
> internal implementation of the API because they have less baggage
> than process sentinels and share data more easily.
And sharing data more easily is exactly what one can't afford in a
language with dynamic binding, since you get no closures whatsoever.
If I have something like
(let ((x (+ y 2)))
do something)
then I can't afford to have some other thread change the meaning of x
in his own (let ((x ... construct. If you want to afford a separate
binding stack for every thread, this also means that every _read_
_access_ to a symbol must run via the thread's binding stack instead
of just using the stack whenever the a binding _changes_.
And it is not only local variables that get temporarily bound: there
are common constructs like
(let ((process-connection-type nil)) [...])
where global variables get some value for some short duration.
> I also mentioned that today's hardware and OS support for it
> generally means that either multiple processors or the illusion of
> them is available to applications that are willing to make use of
> those capabilities.
Applications don't have a will of their own, even though it sometimes
may appear so.
--
David Kastrup, Kriemhildstr. 15, 44793 Bochum
next prev parent reply other threads:[~2003-12-08 20:56 UTC|newest]
Thread overview: 133+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-11-16 21:46 Are there plans for a multi-threaded Emacs? Frank Schmitt
2003-11-17 0:49 ` Alex Schroeder
2003-11-17 4:06 ` Dhruva Krishnamurthy
2003-11-17 4:29 ` Miles Bader
2003-11-30 16:36 ` Kai Grossjohann
2003-11-30 18:01 ` Vinicius Jose Latorre
2003-11-30 18:39 ` Kai Grossjohann
2003-11-30 18:12 ` Benjamin Riefenstahl
2003-11-30 19:40 ` Nic Ferrier
2003-12-01 16:04 ` Ted Zlatanov
2003-12-02 14:45 ` Ted Lemon
2003-12-02 15:48 ` Per Abrahamsen
2003-12-02 17:18 ` David Kastrup
2003-12-03 12:38 ` Per Abrahamsen
2003-12-02 17:27 ` Stefan Monnier
2003-12-02 18:53 ` Simon Josefsson
2003-12-03 13:03 ` Per Abrahamsen
2003-12-02 17:44 ` Ted Zlatanov
2003-12-03 17:16 ` Richard Stallman
2003-12-03 17:58 ` Ted Zlatanov
2003-12-03 23:38 ` Martin Stjernholm
2003-12-04 13:05 ` Ted Zlatanov
2003-12-04 14:07 ` David Kastrup
2003-12-04 14:58 ` Nic Ferrier
2003-12-04 15:44 ` David Kastrup
2003-12-04 16:17 ` Kim F. Storm
2003-12-04 15:58 ` Nic Ferrier
2003-12-04 16:26 ` non-blocking sockets (was Re: Are there plans for a multi-threaded Emacs?) Nic Ferrier
2003-12-05 11:35 ` Kim F. Storm
2003-12-04 19:55 ` Are there plans for a multi-threaded Emacs? Ted Zlatanov
2003-12-04 20:30 ` Stefan Monnier
2003-12-04 20:58 ` Ted Zlatanov
2003-12-04 22:49 ` Stefan Monnier
2003-12-05 12:17 ` Ted Zlatanov
2003-12-05 13:06 ` Thien-Thi Nguyen
2003-12-05 14:44 ` David Kastrup
2003-12-07 23:55 ` Stefan Monnier
2003-12-08 16:54 ` Ted Zlatanov
2003-12-08 17:09 ` David Kastrup
2003-12-08 18:10 ` Ted Zlatanov
2003-12-08 22:02 ` Martin Stjernholm
2003-12-08 18:25 ` What's the problem? (Was: Are there plans for a multi-threaded Emacs?) Luke Gorrie
2003-12-08 19:56 ` Ted Zlatanov
2003-12-08 20:56 ` David Kastrup [this message]
2003-12-08 22:09 ` Martin Stjernholm
2003-12-08 21:01 ` Stefan Monnier
2003-12-08 19:57 ` What's the problem? Simon Josefsson
2003-12-09 23:45 ` Juri Linkov
2003-12-10 0:58 ` Simon Josefsson
2003-12-10 4:35 ` Miles Bader
2003-12-10 5:38 ` Simon Josefsson
2003-12-10 5:51 ` Miles Bader
2003-12-10 6:34 ` Simon Josefsson
2003-12-10 7:19 ` Miles Bader
2003-12-11 14:12 ` Stefan Monnier
2003-12-11 23:09 ` Miles Bader
2003-12-12 23:55 ` Richard Stallman
2003-12-13 16:11 ` Eli Zaretskii
2003-12-13 17:29 ` Jan D.
2003-12-13 17:35 ` David Kastrup
2003-12-14 6:17 ` Eli Zaretskii
2003-12-14 11:55 ` David Kastrup
2003-12-14 14:27 ` Eli Zaretskii
2003-12-14 10:18 ` Richard Stallman
2003-12-10 8:18 ` Eli Zaretskii
2003-12-11 14:45 ` Richard Stallman
2003-12-10 15:36 ` Ted Zlatanov
2003-12-11 1:46 ` Miles Bader
2003-12-12 23:54 ` Richard Stallman
2003-12-11 18:39 ` Ted Zlatanov
2003-12-11 18:48 ` Ted Zlatanov
2003-12-12 3:27 ` Luke A. Olbrish
2003-12-12 3:57 ` Miles Bader
2003-12-13 15:17 ` Richard Stallman
2003-12-13 4:08 ` Miles Bader
2003-12-13 23:14 ` Richard Stallman
2003-12-14 13:12 ` Emacs kill buffer Camm Maguire
2003-12-09 19:28 ` What's the problem? (Was: Are there plans for a multi-threaded Emacs?) Ted Zlatanov
2003-12-09 22:02 ` David Kastrup
2003-12-10 0:13 ` Stefan Monnier
2003-12-10 1:41 ` David Kastrup
2003-12-10 2:49 ` Stefan Monnier
2003-12-12 0:44 ` Martin Stjernholm
2003-12-10 0:45 ` Martin Stjernholm
2003-12-10 2:55 ` Stefan Monnier
2003-12-09 19:32 ` Ted Zlatanov
2003-12-09 22:13 ` Stefan Monnier
2003-12-10 15:16 ` Ted Zlatanov
[not found] ` <E1AUS6B-0006KH-Hq@fencepost.gnu.org>
[not found] ` <4ny8tjryy8.fsf@collins.bwh.harvard.edu>
[not found] ` <4nn09xm68c.fsf@collins.bwh.harvard.edu>
2003-12-13 23:15 ` What's the problem? Richard Stallman
2003-12-14 3:21 ` Martin Stjernholm
2003-12-05 8:58 ` Are there plans for a multi-threaded Emacs? Thien-Thi Nguyen
2003-12-05 11:58 ` Ted Zlatanov
2003-12-05 12:12 ` Ted Zlatanov
2003-12-05 20:37 ` Luke A. Olbrish
2003-12-05 21:45 ` Ted Zlatanov
2003-12-08 0:10 ` Stefan Monnier
2003-12-08 1:26 ` Luke A. Olbrish
2003-12-04 17:22 ` Martin Stjernholm
2003-12-04 18:01 ` David Kastrup
2003-12-04 18:31 ` Martin Stjernholm
2003-12-04 19:26 ` David Kastrup
2003-12-04 22:05 ` Martin Stjernholm
2003-12-04 20:18 ` Ted Zlatanov
2003-12-04 23:00 ` Martin Stjernholm
2003-12-05 12:06 ` Ted Zlatanov
2003-12-05 13:16 ` Martin Stjernholm
2003-12-05 21:30 ` Ted Zlatanov
2003-12-05 14:46 ` David Kastrup
2003-12-05 15:07 ` Martin Stjernholm
2003-12-05 13:56 ` Benjamin Riefenstahl
2003-12-05 21:33 ` non-blocking auto-save (was: Are there plans for a multi-threaded Emacs?) Ted Zlatanov
2003-12-03 20:01 ` Are there plans for a multi-threaded Emacs? Nic Ferrier
2003-12-03 20:29 ` Stefan Monnier
2003-12-03 21:42 ` Robert J. Chassell
2003-12-04 7:33 ` Richard Stallman
2003-12-04 15:37 ` Stefan Monnier
2003-12-04 18:06 ` Thien-Thi Nguyen
2003-12-04 7:33 ` Richard Stallman
2003-12-04 13:14 ` Ted Zlatanov
2003-12-04 15:41 ` Stefan Monnier
2003-12-06 20:58 ` Kai Grossjohann
2003-12-07 0:15 ` Thien-Thi Nguyen
2003-12-07 14:52 ` Kai Grossjohann
2003-12-07 16:58 ` Thien-Thi Nguyen
2003-12-07 4:16 ` Martin Stjernholm
2003-12-07 14:53 ` Kai Grossjohann
2003-12-07 23:00 ` Martin Stjernholm
2003-11-17 19:31 ` Richard Stallman
2003-11-17 22:53 ` David Masterson
2003-11-18 5:57 ` Miles Bader
2003-11-20 19:19 ` David Masterson
2003-11-22 21:19 ` Richard Stallman
2003-11-18 6:52 ` John Wiegley
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
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=x5zne36naf.fsf@lola.goethe.zz \
--to=dak@gnu.org \
--cc=emacs-devel@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 external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.