Subject: Re: bug#38807: [Feature request]: Support lisp workers like web workers.

From: Eli Zaretskii <[email-masked]>
Date: Fri, 03 Jan 2020 08:02:51 +0200

> Date: Fri, 3 Jan 2020 11:18:42 +0800
> From: HaiJun Zhang <[email-masked]>
> Cc: [email-masked], [email-masked]
> 
>  Then these threads cannot really run Lisp at all, nor even directly
>  affect Lisp data. So in effect you want to be able to run threads
>  that don't enter the Lisp interpreter, nor modify any Lisp data.  
> 
> Is it because there are many global resources in infrastructure of network and filesystem functions? 

Yes.  Every variable you want to reference is either global or local
to some buffer, for example.  Just look at any Lisp application in
Emacs and try to analyze its dependence on the global state, and you
will immediately see the problem.

> Is there an efficient way for threads in module to communicate with emacs core? It is used for threads to
> send result data to emacs core. The only thing I known is sending signals to emacs which is not too efficient.
> I would like emacs core to create an event queue for modules and modules can send events to the queue.

There are ways of communications (e.g., you can call any Emacs
function), but if more is needed, we can add that.  Some design is
necessary, though, to identify what else is needed and why.

> Yes. I don’t known how web browsers do this. Their web pages are rendered by different processes and then
> displayed in the same window. 

Shared memory?