[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [RFC] Adding threads to Eshell

From: Eli Zaretskii
Subject: Re: [RFC] Adding threads to Eshell
Date: Fri, 16 Dec 2022 21:51:24 +0200

> Date: Thu, 15 Dec 2022 18:37:09 -0800
> From: Jim Porter <jporterbugs@gmail.com>
> However, before I go too far, I wanted to check with other, more 
> knowledgeable people: are Emacs threads available on all platforms?

Yes.  The only known exception is MSDOS.

> It looks like it requires the pthreads library

pthreads are required only on Posix platforms; on Windows we use
Windows-specific APIs instead.  See systhread.c.

> (though my understanding was 
> that Emacs threads aren't "real" threads, since there's no good way to 
> avoid data races with globals).

No, they are real threads.  You can see them with any OS-level tool
that can examine threads.  We just let only a single one of these
threads to run at any given time (well, with the exception of very
short time windows).

> A second issue I noticed is that Emacs threads have their own, 
> completely separate set of lexical bindings.

Not lexical bindings: local bindings.  That is, if you let-bind a
variable, that binding is only seen in the thread that performed the

> Is it possible to tell a thread that I want to inherit the bindings
> from wherever I called 'make-thread'?

Global bindings are always shared.

> I might be able to avoid this issue, but it would be nice to be able
> to let-bind some defvars and then pass those bindings to an Eshell
> command to do its thing.

If that is what you want, you will have to pass those bindings as
arguments to the thread function.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]