[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] emacs-26 f90a336: Backport doc improvement in ELisp manual
From: |
Eli Zaretskii |
Subject: |
[Emacs-diffs] emacs-26 f90a336: Backport doc improvement in ELisp manual |
Date: |
Sat, 20 Apr 2019 03:22:01 -0400 (EDT) |
branch: emacs-26
commit f90a3360d8c724d61ff89a2e788542a4ff6cb352
Author: Eli Zaretskii <address@hidden>
Commit: Eli Zaretskii <address@hidden>
Backport doc improvement in ELisp manual
* doc/lispref/processes.texi (Accepting Output): Backport:
document how do avoid race conditions while waiting for all of
the process's output to arrive.
---
doc/lispref/processes.texi | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)
diff --git a/doc/lispref/processes.texi b/doc/lispref/processes.texi
index d2ab518..7331eb6 100644
--- a/doc/lispref/processes.texi
+++ b/doc/lispref/processes.texi
@@ -1834,6 +1834,26 @@ corresponding connection contains buffered data. The
function returns
arrived.
@end defun
+If a connection from a process contains buffered data,
address@hidden can return address@hidden even after the
+process has exited. Therefore, although the following loop:
+
address@hidden
+;; This loop contains a bug.
+(while (process-live-p process)
+ (accept-process-output process))
address@hidden example
+
address@hidden
+will often read all output from @var{process}, it has a race condition
+and can miss some output if @code{process-live-p} returns @code{nil}
+while the connection still contains data. Better is to write the loop
+like this:
+
address@hidden
+(while (accept-process-output process))
address@hidden example
+
@node Processes and Threads
@subsection Processes and Threads
@cindex processes, threads
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] emacs-26 f90a336: Backport doc improvement in ELisp manual,
Eli Zaretskii <=