bpo-40089: Add _at_fork_reinit() method to locks (GH-19195)

Add a private _at_fork_reinit() method to _thread.Lock,
_thread.RLock, threading.RLock and threading.Condition classes:
reinitialize the lock after fork in the child process; reset the lock
to the unlocked state.

Rename also the private _reset_internal_locks() method of
threading.Event to _at_fork_reinit().

* Add _PyThread_at_fork_reinit() private function. It is excluded
  from the limited C API.
* threading.Thread._reset_internal_locks() now calls
  _at_fork_reinit() on self._tstate_lock rather than creating a new
  Python lock object.
This commit is contained in:
Victor Stinner 2020-04-07 23:11:49 +02:00 committed by GitHub
parent 48b069a003
commit 87255be696
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 133 additions and 22 deletions

View file

@ -491,7 +491,8 @@ register_at_forker(PyObject **lst, PyObject *func)
}
return PyList_Append(*lst, func);
}
#endif
#endif /* HAVE_FORK */
/* Legacy wrapper */
void