[pypy-dev] Thread cloning (coroutine cloning, really)

Armin Rigo arigo at tunes.org
Fri May 12 11:05:37 CEST 2006


Hi Aurelien,

On Fri, May 12, 2006 at 10:24:42AM +0200, Aur?lien Camp?as wrote:
> Just a note there : the constraint solver doesn't really need thread
> cloning. It's the framework that makes possible modular integration of
> constraint solving and logic programming that needs it.

I was about to ask precisely if the operation I described here makes
sense from your point of view.  That's basically what you need, isn't
it?

> Applevel modules are the responsibility of their implementors : if
> they contain shared global mutable state, then sharing them makes them
> thread-unsafe and unsuitable for use in comp. spaces. But that's
> life. 
> 
> well, I cannot but ask : would it be possible to be able to clone
> these anyway ?

It's part of the experimentation that we'll need.  They would be cloned
if we go for the approach that all objects *created* by a thread are
cloned together with the thread.  This includes app-level objects.

This interpretation follows from a nice -- if vague -- high-level
description from Christian: if you start a thread and it computes
something up to some point, and clone it as this point, then you get a
new thread that "looks like" it has been started from scratch and then
ran up to the same point, repeating the same computations.  Of course,
this is vague because we need to explain that input-output and other
side effects that the thread might have had are not duplicated.


A bientot,

Armin.



More information about the Pypy-dev mailing list