[Python-checkins] cpython (3.4): asyncio: add a note about (non) thread safety in each class
victor.stinner
python-checkins at python.org
Wed Feb 25 14:26:16 CET 2015
https://hg.python.org/cpython/rev/14e7a28235c6
changeset: 94742:14e7a28235c6
branch: 3.4
user: Victor Stinner <victor.stinner at gmail.com>
date: Wed Feb 25 14:24:15 2015 +0100
summary:
asyncio: add a note about (non) thread safety in each class
files:
Doc/library/asyncio-eventloop.rst | 5 +++++
Doc/library/asyncio-protocol.rst | 2 ++
Doc/library/asyncio-queue.rst | 2 ++
Doc/library/asyncio-stream.rst | 4 ++++
Doc/library/asyncio-subprocess.rst | 5 +++++
Doc/library/asyncio-task.rst | 4 ++++
6 files changed, 22 insertions(+), 0 deletions(-)
diff --git a/Doc/library/asyncio-eventloop.rst b/Doc/library/asyncio-eventloop.rst
--- a/Doc/library/asyncio-eventloop.rst
+++ b/Doc/library/asyncio-eventloop.rst
@@ -22,6 +22,8 @@
Base class of event loops.
+ This class is :ref:`not thread safe <asyncio-multithreading>`.
+
Run an event loop
-----------------
@@ -104,6 +106,9 @@
Like :meth:`call_soon`, but thread safe.
+ See the :ref:`concurrency and multithreading <asyncio-multithreading>`
+ section of the documentation.
+
.. _asyncio-delayed-calls:
diff --git a/Doc/library/asyncio-protocol.rst b/Doc/library/asyncio-protocol.rst
--- a/Doc/library/asyncio-protocol.rst
+++ b/Doc/library/asyncio-protocol.rst
@@ -23,6 +23,8 @@
subprocess pipes. The methods available on a transport depend on
the transport's kind.
+The transport classes are :ref:`not thread safe <asyncio-multithreading>`.
+
BaseTransport
-------------
diff --git a/Doc/library/asyncio-queue.rst b/Doc/library/asyncio-queue.rst
--- a/Doc/library/asyncio-queue.rst
+++ b/Doc/library/asyncio-queue.rst
@@ -31,6 +31,8 @@
be interrupted between calling :meth:`qsize` and doing an operation on the
Queue.
+ This class is :ref:`not thread safe <asyncio-multithreading>`.
+
.. versionchanged:: 3.4.3
New :meth:`join` and :meth:`task_done` methods.
diff --git a/Doc/library/asyncio-stream.rst b/Doc/library/asyncio-stream.rst
--- a/Doc/library/asyncio-stream.rst
+++ b/Doc/library/asyncio-stream.rst
@@ -85,6 +85,8 @@
.. class:: StreamReader(limit=None, loop=None)
+ This class is :ref:`not thread safe <asyncio-multithreading>`.
+
.. method:: exception()
Get the exception.
@@ -155,6 +157,8 @@
wait for flow control. It also adds a transport attribute which references
the :class:`Transport` directly.
+ This class is :ref:`not thread safe <asyncio-multithreading>`.
+
.. attribute:: transport
Transport.
diff --git a/Doc/library/asyncio-subprocess.rst b/Doc/library/asyncio-subprocess.rst
--- a/Doc/library/asyncio-subprocess.rst
+++ b/Doc/library/asyncio-subprocess.rst
@@ -193,6 +193,9 @@
:meth:`~subprocess.Popen.wait` method of the :class:`~subprocess.Popen`
class is implemented as a busy loop.
+ This class is :ref:`not thread safe <asyncio-multithreading>`. See also the
+ :ref:`Subprocess and threads <asyncio-subprocess-threads>` section.
+
.. coroutinemethod:: wait()
Wait for child process to terminate. Set and return :attr:`returncode`
@@ -310,6 +313,8 @@
subprocesses from other threads. Call the :func:`get_child_watcher`
function in the main thread to instantiate the child watcher.
+The :class:`asyncio.subprocess.Process` class is not thread safe.
+
.. seealso::
The :ref:`Concurrency and multithreading in asyncio
diff --git a/Doc/library/asyncio-task.rst b/Doc/library/asyncio-task.rst
--- a/Doc/library/asyncio-task.rst
+++ b/Doc/library/asyncio-task.rst
@@ -209,6 +209,8 @@
:func:`~concurrent.futures.as_completed` functions in the
:mod:`concurrent.futures` package.
+ This class is :ref:`not thread safe <asyncio-multithreading>`.
+
.. method:: cancel()
Cancel the future and schedule callbacks.
@@ -375,6 +377,8 @@
Don't directly create :class:`Task` instances: use the :func:`async`
function or the :meth:`BaseEventLoop.create_task` method.
+ This class is :ref:`not thread safe <asyncio-multithreading>`.
+
.. classmethod:: all_tasks(loop=None)
Return a set of all tasks for an event loop.
--
Repository URL: https://hg.python.org/cpython
More information about the Python-checkins
mailing list