diff options
Diffstat (limited to 'contrib/tools/python3/Lib/asyncio/mixins.py')
-rw-r--r-- | contrib/tools/python3/Lib/asyncio/mixins.py | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/contrib/tools/python3/Lib/asyncio/mixins.py b/contrib/tools/python3/Lib/asyncio/mixins.py new file mode 100644 index 0000000000..c6bf97329e --- /dev/null +++ b/contrib/tools/python3/Lib/asyncio/mixins.py @@ -0,0 +1,21 @@ +"""Event loop mixins.""" + +import threading +from . import events + +_global_lock = threading.Lock() + + +class _LoopBoundMixin: + _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'{self!r} is bound to a different event loop') + return loop |