issue #144: teach Select() to close its latch
Causes all threads sleeping on the select to wake.
This commit is contained in:
parent
8aada2646c
commit
4f361be7e7
16
docs/api.rst
16
docs/api.rst
|
@ -159,6 +159,11 @@ contexts.
|
|||
|
||||
:return:
|
||||
:py:class:`mitogen.core.Message`
|
||||
:raises mitogen.core.TimeoutError:
|
||||
Timeout was reached.
|
||||
:raises mitogen.core.LatchError:
|
||||
:py:meth:`close` has been called, and the underlying latch is no
|
||||
longer valid.
|
||||
|
||||
.. py:method:: __bool__ ()
|
||||
|
||||
|
@ -166,9 +171,14 @@ contexts.
|
|||
|
||||
.. py:method:: close ()
|
||||
|
||||
Remove the select's notifier function from each registered receiver.
|
||||
Necessary to prevent memory leaks in long-running receivers. This is
|
||||
called automatically when the Python :keyword:`with` statement is used.
|
||||
Remove the select's notifier function from each registered receiver,
|
||||
mark the associated latch as closed, and cause any thread currently
|
||||
sleeping in :py:meth:`get` to be woken with
|
||||
:py:class:`mitogen.core.LatchError`.
|
||||
|
||||
This is necessary to prevent memory leaks in long-running receivers. It
|
||||
is called automatically when the Python :keyword:`with` statement is
|
||||
used.
|
||||
|
||||
.. py:method:: empty ()
|
||||
|
||||
|
|
|
@ -236,6 +236,7 @@ class Select(object):
|
|||
def close(self):
|
||||
for recv in self._receivers[:]:
|
||||
self.remove(recv)
|
||||
self._latch.close()
|
||||
|
||||
def empty(self):
|
||||
return self._latch.empty()
|
||||
|
|
Loading…
Reference in New Issue