[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