[Python-3000] the future of the GIL
Giovanni Bajo
rasky at develer.com
Sat May 12 03:00:36 CEST 2007
On 10/05/2007 5.38, Josiah Carlson wrote:
>>> using multiple processes cause some
>>> headaches with frozen distributions (PyInstaller, py2exe, etc.), like those
>>> usually found on Windows, specifically because Windows does not have fork().
>> Isn't that just a problem with Windows generally? I don't
>> see what the method of packaging has to do with it.
>>
>> Also, I've seen it suggested that there may actually be
>> a way of doing something equivalent to a fork in Windows,
>> even though it doesn't have a fork() system call as such.
>> Does anyone know more about this?
>
> Cygwin emulates fork() by creating a shared mmap, creating a new child
> process, copying the contents of the parent process' memory to the child
> process (after performing the proper allocations), then hacks up the
> child process' call stack.
Yes that's the theory. If you look at the implementation, it's fullfilled of
complexities, corner cases, undocumented glitchs and whatnot.
cygwin's fork() is mature, but I don't think it's easy to extract from cygwin.
Moreover, there would be license issues since fork() is GPL. Doing another
implementation from scratch is going to be hard.
--
Giovanni Bajo
More information about the Python-3000
mailing list