unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Ted Zlatanov <tzz@lifelogs.com>
Subject: Re: Are there plans for a multi-threaded Emacs?
Date: Wed, 03 Dec 2003 12:58:56 -0500	[thread overview]
Message-ID: <4nllpt3hr3.fsf@lockgroove.bwh.harvard.edu> (raw)
In-Reply-To: E1ARacL-0004cw-CJ@fencepost.gnu.org

On Wed, 03 Dec 2003, rms@gnu.org wrote:

    > I think migrating Emacs towards a threading model is possible:
> 
>     - start with all primitive or ELisp functions assumed NOT
>       thread-safe
> 
>     - allow threads to run, but any access to a function needs to be
>       synchronous.  At first, this will effectively make threads
>       simple switched tasks, and will probably make Emacs slower.
> 
> Many sections of Lisp code would need to have locking in order
> to run correctly with multiple threads.  For instance, everything
> of the form
> 
>   (setq global-list (cons foo global-list))
> 
> would need locking.

What I proposed is that *all* functions start with the "synchronous"
atribute.  This would apply to primitives as well.

Then, they would be gradually rewritten.  For instance, a thread-safe
setq would act just like the regular setq, but it would lock its
arguments with semaphores before modifying them.  The thread-safe
setq can then be marked "asynchronous."

To deal with the example above, all buffers, variables, processes,
etc. that a synchronous function affects will have to be
thread-locked also.  So that needs to be an extension to my earlier
definition of "synchronous" - not only should concurrent copies of the
same function be forbidden, but also any objects that are used
elsewhere need to trigger thread-locking while the function is in a
scope that involves those objects.  I don't know how feasible that is.

Eventually pieces of code like the above would need to be rewritten
using atomic functions in order to avoid these problems.  For
instance, (push foo global-list) would work better above because the
push function can be made thread-safe.  I know push is not the
perfect example, but the point is that atomic modifications need to
be done atomically.

Ted

  reply	other threads:[~2003-12-03 17:58 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 [this message]
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
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=4nllpt3hr3.fsf@lockgroove.bwh.harvard.edu \
    --to=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).