From 0ec34cab9dd4a7bcddafaeeb445fae0f26afcdd1 Mon Sep 17 00:00:00 2001 From: Yurii Karabas <1998uriyyo@gmail.com> Date: Tue, 24 Nov 2020 20:08:54 +0200 Subject: bpo-42392: Remove loop parameter form asyncio locks and Queue (#23420) Co-authored-by: Andrew Svetlov --- Lib/asyncio/mixins.py | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 Lib/asyncio/mixins.py (limited to 'Lib/asyncio/mixins.py') diff --git a/Lib/asyncio/mixins.py b/Lib/asyncio/mixins.py new file mode 100644 index 00000000000..dbc4b5faccb --- /dev/null +++ b/Lib/asyncio/mixins.py @@ -0,0 +1,21 @@ +"""Event loop mixins.""" + +import threading +from . import events + +_global_lock = threading.Lock() + + +class _LoopBoundedMixin: + _loop = None + + def _get_loop(self): + loop = events._get_running_loop() + + if self._loop is None: + with _global_lock: + if self._loop is None: + self._loop = loop + if loop is not self._loop: + raise RuntimeError(f'{type(self).__name__} have already bounded to another loop') + return loop -- cgit v1.2.3