unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Martin Stjernholm <mast@lysator.liu.se>
Cc: Ted Zlatanov <tzz@lifelogs.com>, emacs-devel@gnu.org
Subject: Re: Are there plans for a multi-threaded Emacs?
Date: Thu, 04 Dec 2003 23:05:37 +0100	[thread overview]
Message-ID: <5bhe0gdyry.fsf@lister.roxen.com> (raw)
In-Reply-To: <x5d6b4s7tn.fsf@lola.goethe.zz> (David Kastrup's message of "04 Dec 2003 20:26:28 +0100")

David Kastrup <dak@gnu.org> wrote:

> The whole proposal was geared towards parallel execution of
> computation-intensive tasks (like gnus summarizing and scoring) with
> the editing foreground task.

This discussion thread has been both about how threading should be
solved and what should be achieved with the solution. True parallel
execution is not the only discussed goal. In my opinion that goal is
fairly unimportant - the big win is instead to be able to use the
thread paradigm which in some cases is more convenient than the
alternative, i.e. callback driven programming.

As for the problem with Gnus, a threading model with a global lock is
a worthwhile improvement: It would allow that cpu intensive process to
be interrupted regularly to let Emacs respond to user actions. The big
win here is imho that Emacs remains responsive; it doesn't bother me
at all that the few milliseconds of work to achieve that is added to
the total time of the score buffer generation instead of being carried
out on another cpu.

The issue of preemption at the elisp level only affects what kind of
changes need to be done in Gnus to achieve these regular interrupts:
If there is no preemption, regular yield calls have to be added at
points where the state is consistent enough. Otherwise proper locking
has to be implemented.

> Cooperative yielding can't make use of hyperthreading.

Yes it can. Seems to me you are confusing cooperative yielding and
preemption with the use of a single global lock. A single global lock
prohibits both parallel execution and underlying preemption.
Preemption/cooperative yielding doesn't say anything about the kind of
locking being used.

> Tasks that require cooperative yielding must not share any resources
> with any other task in between synchronization points (yield points,
> whatever).

Depends on what you mean with sharing a resource. To be precise, they
can't leave any shared resource in an inconsistent state across a
yield point, and they can't assume anything about the state of any
shared resource afterwards.

Of course, even in a cooperative environment mutexes are useful to
lock out other threads from a resource that potentially is shared but
that the current thread want to retain exclusive access to.

> And even with cooperative multitasking you need separate stacks for
> several resources, for every task, /.../

Of course. That's one of two things a thread consists of (the other is
a promise of future cpu time).

>> Another reason to have only a single interpreter lock and no
>> preemption. It's hardly so expensive that it would take significant
>> time compared to blocking operations, is it?
>
> I don't see any usefulness at all.  Certainly every nontrivial task
> will need to use the interpreter?  So where is the gain?

Blocking operations, like waiting on a mutex or reading from a file or
socket, can leave the interpreter free to do other things. All
blocking operations can be fixed to not need direct access to the
interpreter data. In many cases it's such blocking operations that
make Emacs unresponsive. The alternative to threads is to rewrite all
such code to use callbacks (and in some cases the OS doesn't even
provide the necessary interface for callbacks, e.g. gethostbyname(3)).

  reply	other threads:[~2003-12-04 22:05 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
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 [this message]
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

  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=5bhe0gdyry.fsf@lister.roxen.com \
    --to=mast@lysator.liu.se \
    --cc=emacs-devel@gnu.org \
    --cc=tzz@lifelogs.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).