diff --git a/pipe_io_server/pipe_reader_thread.py b/pipe_io_server/pipe_reader_thread.py index 7e16b32..84d9288 100644 --- a/pipe_io_server/pipe_reader_thread.py +++ b/pipe_io_server/pipe_reader_thread.py @@ -34,13 +34,12 @@ class PipeReaderThread(Thread): return open(self._pipe_path, 'rb') def stop(self): - self._unblock() + while self.is_alive(): + self._unblock() self.join() def _unblock(self): - while True: - with suppress(OSError): - fd = osopen(self._pipe_path, O_WRONLY | O_NONBLOCK) - write(fd, self.stop_sequence) - close(fd) - break + with suppress(OSError): + fd = osopen(self._pipe_path, O_WRONLY | O_NONBLOCK) + write(fd, self.stop_sequence) + close(fd) diff --git a/pipe_io_server/pipe_writer_thread.py b/pipe_io_server/pipe_writer_thread.py index 054496d..47305e4 100644 --- a/pipe_io_server/pipe_writer_thread.py +++ b/pipe_io_server/pipe_writer_thread.py @@ -39,13 +39,12 @@ class PipeWriterThread(Thread): return open(self._pipe_path, 'wb') def stop(self): - self._unblock() + while self.is_alive(): + self._unblock() self.join() def _unblock(self): - while True: - with suppress(OSError): - fd = osopen(self._pipe_path, O_RDONLY | O_NONBLOCK) - self._write_queue.push_front(None) - close(fd) - break + with suppress(OSError): + fd = osopen(self._pipe_path, O_RDONLY | O_NONBLOCK) + self._write_queue.push_front(None) + close(fd)