diff options
| author | Jesse Noller <jnoller@gmail.com> | 2008-07-17 16:49:17 +0000 |
|---|---|---|
| committer | Jesse Noller <jnoller@gmail.com> | 2008-07-17 16:49:17 +0000 |
| commit | ee9fe371f80867cf02e94c56cc5c43b621751bf5 (patch) | |
| tree | fe95767c524c288a8cc47339239063b921e7fec2 /Python/ceval.c | |
| parent | 8628a343d76749a7ef95e85885e0a087d5693736 (diff) | |
| download | cpython-ee9fe371f80867cf02e94c56cc5c43b621751bf5.tar.gz | |
Merger 65032 to py3k
Diffstat (limited to 'Python/ceval.c')
| -rw-r--r-- | Python/ceval.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/Python/ceval.c b/Python/ceval.c index c75caf6823..9601de5771 100644 --- a/Python/ceval.c +++ b/Python/ceval.c @@ -266,6 +266,9 @@ PyEval_ReleaseThread(PyThreadState *tstate) void PyEval_ReInitThreads(void) { + PyObject *threading, *result; + PyThreadState *tstate; + if (!interpreter_lock) return; /*XXX Can't use PyThread_free_lock here because it does too @@ -275,6 +278,23 @@ PyEval_ReInitThreads(void) interpreter_lock = PyThread_allocate_lock(); PyThread_acquire_lock(interpreter_lock, 1); main_thread = PyThread_get_thread_ident(); + + /* Update the threading module with the new state. + */ + tstate = PyThreadState_GET(); + threading = PyMapping_GetItemString(tstate->interp->modules, + "threading"); + if (threading == NULL) { + /* threading not imported */ + PyErr_Clear(); + return; + } + result = PyObject_CallMethod(threading, "_after_fork", NULL); + if (result == NULL) + PyErr_WriteUnraisable(threading); + else + Py_DECREF(result); + Py_DECREF(threading); } #endif |
