stumpwm-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [STUMP] using threads in mode line modules to avoid blocking


From: David Bjergaard
Subject: Re: [STUMP] using threads in mode line modules to avoid blocking
Date: Mon, 02 Mar 2015 12:54:58 -0500
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.4 (gnu/linux)

Thinking out loud (this is beyond my expertise), could it be that your
thread isn't being terminated properly if you lose connection to the
remote host? If stumpwm (or the lisp kernel) polls your thread and gets
no response, it probably just hangs there waiting.

Someone with more experience may have better insights.

    Dave

Joseph Mingrone <address@hidden> writes:

> Hi,
>
> I've been playing around writing some mode line modules.  I quickly
> realized that anything that blocks, blocks the whole window manager.
> Using threads improves the situation, but there are still hiccups.
> These hiccups mean that hitting the prefix key results in a pause before
> the rat shows up.  This can be annoying because no one waits for the
> rat before pressing the subsequent keys.
>
> Below is some code that checks a remote maildir directory for new
> messages.  The hiccups occur when the connection to the remote host is
> broken.  Why this is?  I hoped that threading would have meant a
> smoother experience.
>
> Joseph
>
> (defun fmt-maildir-modeline (ml)
>   "Return the number of new mails"
>   (declare (ignore ml))
>   (let ((now (/ (get-internal-real-time) internal-time-units-per-second)))
>     (when (or (= 0 *maildir-prev-time*) (>= (- now *maildir-prev-time*) 60))
>       (setf *maildir-prev-time* now)
>       (sb-thread:make-thread
>        (lambda ()
>        (setf *new-mail-count*
>              (string-trim
>               '(#\Space #\Tab #\Newline)
>               (stumpwm::run-prog-collect-output
>                stumpwm::*shell-program* "-c"
>                (concatenate 'string "/usr/bin/ssh -p " *port*
>                             " -x -o ConnectTimeout=1 " *user*
>                             "@" *host* " 'ls " *path*
>                             " | wc -l'"))))))))
>   (when (string= *new-mail-count* "0")
>     (setf *new-mail-count* ""))
>   (format nil "~a" *new-mail-count*))
>
>
> _______________________________________________
> Stumpwm-devel mailing list
> address@hidden
> https://lists.nongnu.org/mailman/listinfo/stumpwm-devel



reply via email to

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