changeset 72639:ade5681a8e7e

(Idle Timers): Explain why timer functions should not loop until (input-pending-p).
author Richard M. Stallman <rms@gnu.org>
date Mon, 04 Sep 2006 15:07:32 +0000
parents abebf4e18f10
children 74a5b2cff440
files lispref/os.texi
diffstat 1 files changed, 19 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/lispref/os.texi	Mon Sep 04 15:03:26 2006 +0000
+++ b/lispref/os.texi	Mon Sep 04 15:07:32 2006 +0000
@@ -1578,6 +1578,25 @@
 @end smallexample
 @end defun
 
+  Some idle timer functions in user Lisp packages have a loop that
+does a certain amount of processing each time around, and exits when
+@code{(input-pending-p)} is non-@code{nil}.  That approach seems very
+natural but has two problems:
+
+@itemize
+@item
+It blocks out all process output (since Emacs accepts process output
+only while waiting).
+
+@item
+It blocks out any idle timers that ought to run during that time.
+@end itemize
+
+@noindent
+To avoid these problems, don't use that technique.  Instead, write
+such idle timers to reschedule themselves after a brief pause, using
+the method in the @code{timer-function} example above.
+
 @node Terminal Input
 @section Terminal Input
 @cindex terminal input