[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.)

reply via email to

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