Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
cpython
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
cpython
Commits
f7ecfac0
Commit
f7ecfac0
authored
May 28, 2017
by
Antoine Pitrou
Committed by
GitHub
May 28, 2017
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Doc nits for bpo-16500 (#1841)
* Doc nits for bpo-16500 * Fix more references
parent
eca7da0f
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
25 additions
and
13 deletions
+25
-13
Doc/c-api/init.rst
Doc/c-api/init.rst
+4
-4
Doc/whatsnew/3.7.rst
Doc/whatsnew/3.7.rst
+9
-0
Lib/threading.py
Lib/threading.py
+2
-2
Misc/NEWS
Misc/NEWS
+3
-0
Python/ceval.c
Python/ceval.c
+4
-4
Python/import.c
Python/import.c
+1
-1
Python/pystate.c
Python/pystate.c
+1
-1
Python/thread.c
Python/thread.c
+1
-1
No files found.
Doc/c-api/init.rst
View file @
f7ecfac0
...
...
@@ -564,7 +564,7 @@ Additionally, when extending or embedding Python, calling :c:func:`fork`
directly rather than through :func:`os.fork` (and returning to or calling
into Python) may result in a deadlock by one of Python's internal locks
being held by a thread that is defunct after the fork.
:c:func:`PyOS_AfterFork` tries to reset the necessary locks, but is not
:c:func:`PyOS_AfterFork
_Child
` tries to reset the necessary locks, but is not
always able to.
...
...
@@ -675,9 +675,9 @@ code, or when embedding the Python interpreter:
.. c:function:: void PyEval_ReInitThreads()
This function is called from :c:func:`PyOS_AfterFork
` to ensure that newly
created child processes don't hold locks referring to threads which
are not running in the child process.
This function is called from :c:func:`PyOS_AfterFork
_Child` to ensure
that newly created child processes don't hold locks referring to threads
which
are not running in the child process.
The following functions use thread-local storage, and are not compatible
...
...
Doc/whatsnew/3.7.rst
View file @
f7ecfac0
...
...
@@ -166,6 +166,10 @@ Serhiy Storchaka in :issue:`28682`.)
Added support for :ref:`file descriptors <path_fd>` in :func:`~os.scandir`
on Unix. (Contributed by Serhiy Storchaka in :issue:`25996`.)
New function :func:`os.register_at_fork` allows registering Python callbacks
to be executed on a process fork. (Contributed by Antoine Pitrou in
:issue:`16500`.)
unittest.mock
-------------
...
...
@@ -243,6 +247,11 @@ Build and C API Changes
* Added functions :c:func:`PySlice_Unpack` and :c:func:`PySlice_AdjustIndices`.
(Contributed by Serhiy Storchaka in :issue:`27867`.)
* :c:func:`PyOS_AfterFork` is deprecated in favour of the new functions
:c:func:`PyOS_BeforeFork`, :c:func:`PyOS_AfterFork_Parent` and
:c:func:`PyOS_AfterFork_Child`. (Contributed by Antoine Pitrou in
:issue:`16500`.)
Deprecated
==========
...
...
Lib/threading.py
View file @
f7ecfac0
...
...
@@ -1320,8 +1320,8 @@ except ImportError:
def
_after_fork
():
# This function is called by Python/ceval.c:PyEval_ReInitThreads which
# is called from PyOS_AfterFork
. Here we cleanup threading module stat
e
# that should not exist after a fork.
# is called from PyOS_AfterFork
_Child. Here we cleanup threading modul
e
#
state
that should not exist after a fork.
# Reset _active_limbo_lock, in case we forked while the lock was held
# by another (non-forked) thread. http://bugs.python.org/issue874900
...
...
Misc/NEWS
View file @
f7ecfac0
...
...
@@ -1052,6 +1052,9 @@ Windows
C API
-----
- bpo-16500: Deprecate PyOS_AfterFork() and add PyOS_BeforeFork(),
PyOS_AfterFork_Parent() and PyOS_AfterFork_Child().
- bpo-6532: The type of results of PyThread_start_new_thread() and
PyThread_get_thread_ident(), and the id parameter of
PyThreadState_SetAsyncExc() changed from "long" to "unsigned long".
...
...
Python/ceval.c
View file @
f7ecfac0
...
...
@@ -232,10 +232,10 @@ PyEval_ReleaseThread(PyThreadState *tstate)
drop_gil
(
tstate
);
}
/* This function is called from PyOS_AfterFork
to destroy all threads which are
*
not running in the child process, and clear internal locks which might be
*
held by those threads. (This could also be done using pthread_atfork
*
mechanism, at least for the pthreads implementation.) *
/
/* This function is called from PyOS_AfterFork
_Child to destroy all threads
*
which are not running in the child process, and clear internal locks
*
which might be held by those threads.
*/
void
PyEval_ReInitThreads
(
void
)
...
...
Python/import.c
View file @
f7ecfac0
...
...
@@ -194,7 +194,7 @@ _PyImport_ReleaseLock(void)
return
1
;
}
/* This function is called from PyOS_AfterFork to ensure that newly
/* This function is called from PyOS_AfterFork
_Child
to ensure that newly
created child processes do not share locks with the parent.
We now acquire the import lock around fork() calls but on some platforms
(Solaris 9 and earlier? see isue7242) that still left us with problems. */
...
...
Python/pystate.c
View file @
f7ecfac0
...
...
@@ -800,7 +800,7 @@ _PyGILState_Fini(void)
autoInterpreterState
=
NULL
;
}
/* Reset the TLS key - called by PyOS_AfterFork().
/* Reset the TLS key - called by PyOS_AfterFork
_Child
().
* This should not be necessary, but some - buggy - pthread implementations
* don't reset TLS upon fork(), see issue #10517.
*/
...
...
Python/thread.c
View file @
f7ecfac0
...
...
@@ -325,7 +325,7 @@ PyThread_delete_key_value(int key)
}
/* Forget everything not associated with the current thread id.
* This function is called from PyOS_AfterFork(). It is necessary
* This function is called from PyOS_AfterFork
_Child
(). It is necessary
* because other thread ids which were in use at the time of the fork
* may be reused for new threads created in the forked process.
*/
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment