[Python-Dev] pthreads, fork, import, and execvp

Lisandro Dalcin dalcinl at gmail.com
Thu Jul 16 23:17:12 CEST 2009


On Thu, May 18, 2006 at 3:02 PM, "Martin v. Löwis"<martin at v.loewis.de> wrote:
>
> Right. With some googling, I found that one solution is pthread_atexit:
> a pthread_atexit handler is a triple (before, in_parent, in_child).
> You set it to (acquire, release, release).

Did you mean pthread_atfork() ?

> When somebody forks,
> the pthread library will first acquire the import lock in the thread
> that wants to fork. Then the fork occurs, and the import lock gets
> then released both in the parent and in the child.
>
> I would like to see this approach implemented, but I agree with you
> that a test case should be created first.
>


Whould some new C-API functions do the trick?

PyOS_AtForkPrepare() # acquire import lock
pid = fork()
if (pid == 0)
    PyOS_AtForkChild() # current PyOS_AfterFork() + release import lock
else
    PyOS_AtForkParent() # release import lock


-- 
Lisandro Dalcín
---------------
Centro Internacional de Métodos Computacionales en Ingeniería (CIMEC)
Instituto de Desarrollo Tecnológico para la Industria Química (INTEC)
Consejo Nacional de Investigaciones Científicas y Técnicas (CONICET)
PTLC - Güemes 3450, (3000) Santa Fe, Argentina
Tel/Fax: +54-(0)342-451.1594


More information about the Python-Dev mailing list