[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[SCM] Hurd branch, rbraun/select_timeout, updated. hurd-release-0-2-3444
From: |
Richard Braun |
Subject: |
[SCM] Hurd branch, rbraun/select_timeout, updated. hurd-release-0-2-3444-g40fe717 |
Date: |
Mon, 30 Jul 2012 22:03:23 +0000 |
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Hurd".
The branch, rbraun/select_timeout has been updated
via 40fe717ba9093c0c893d9ea44673e46a6f9e0c7d (commit)
from 8e6e81285f9c8f83bb0394d75b48804d4bf9a28d (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 40fe717ba9093c0c893d9ea44673e46a6f9e0c7d
Author: Richard Braun <address@hidden>
Date: Mon Jul 30 23:56:26 2012 +0200
Another attempt to fix timeout handling
Draining the message queue is dumb. Messages could arrive afterwards,
and still cause a deadlock if the message queue is full. Instead, make
the wakeup call (cproc_ready) really non-blocking. As only one message
is actually required to wake up a thread, limit the message queue to
one. If a message arrives after a timeout, it will immediately wake the
next blocking of the target thread. Spurious wakeups are expected, and
limiting the message queue size reduces the maximum overhead they can
cause.
Unfortunately, this isn't enough. There are two other fundamental issues
to solve. First, both the blocking thread (on timeout) and the sender
(on wakeup) can remove the target thread from condition queues, which
means a double removal could occur. Second, there is no simple way to
remove an arbitrary thread from a queue, because they are singly linked.
The next changes should replace the existing queue code with a doubly
linked list, and serialize removal from condition queues in the target
threads only, whether after timeout or wakeup.
-----------------------------------------------------------------------
Summary of changes:
libthreads/cancel-cond.c | 17 ++----------
libthreads/cprocs.c | 53 ++++++++++++++++------------------------
libthreads/cthread_internals.h | 13 ----------
libthreads/cthreads.h | 2 +-
4 files changed, 25 insertions(+), 60 deletions(-)
hooks/post-receive
--
Hurd
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [SCM] Hurd branch, rbraun/select_timeout, updated. hurd-release-0-2-3444-g40fe717,
Richard Braun <=