From: Richard M. Stallman Date: Mon, 4 Sep 2006 15:07:32 +0000 (+0000) Subject: (Idle Timers): Explain why timer functions should not X-Git-Tag: emacs-pretest-22.0.90~769 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=0a369706ff1743a115dd39648df6487ebe2f5025;p=emacs.git (Idle Timers): Explain why timer functions should not loop until (input-pending-p). --- diff --git a/lispref/os.texi b/lispref/os.texi index f6682548e5b..edf5833bf42 100644 --- a/lispref/os.texi +++ b/lispref/os.texi @@ -1578,6 +1578,25 @@ Here's an example: @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