emacs-diffs
[Top][All Lists]
Advanced

[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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]