[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Warning: Unstable POSIX threads support comitted to CVS
From: |
Marius Vollmer |
Subject: |
Re: Warning: Unstable POSIX threads support comitted to CVS |
Date: |
09 Dec 2002 15:26:03 +0100 |
User-agent: |
Gnus/5.09 (Gnus v5.9.0) Emacs/21.1 |
Mikael Djurfeldt <address@hidden> writes:
> It is very irritating that signals are delivered to whatever thread
> happens to run for the moment.
Do you refer to the execution of POSIX signal handlers or to the
execution of Scheme signal handlers? Scheme handlers are registered
for a particular thread and will always execute in that thread. If
you don't specify a thread, as in (sigaction SIGINT handler), the
handler is registered for the calling thread.
POSIX specifies that a POSIX signal is delivered to a random thread
that has not blocked that signal. On Linux, a thread is really a
process with its own PID and since signals are delivered to a specific
PID, they are in effect delivered to specific threads (or process
groups -> thread groups). For example, a SIGINT handler is executed
in all threads of a process since the whole process group is signalled
by the terminal driver.
That is, signals-plus-threads are quite nasty on Linux. I think we
should have a dedicated signal handling thread that polls for signals
and marks the relevant system asyncs when they arrive.
(More later.)