Mercurial > emacs
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