[Haskell-cafe] Re: Bound threads
Marcin 'Qrczak' Kowalczyk
qrczak at knm.org.pl
Tue Mar 1 15:54:45 EST 2005
Benjamin Franksen <benjamin.franksen at bessy.de> writes:
>> Producer/consumer ping-pong is 15 times slower between threads
>> running on different OS threads than on two unbound threads.
>
> Which OS?
Linux/NPTL.
A context switch which changes OS threads involves:
setitimer
pthread_sigmask
pthread_mutex_lock
pthread_cond_signal
pthread_cond_wait (starting)
and in the other thread:
pthread_cond_wait (returning)
pthread_mutex_unlock
pthread_sigmask
setitimer
setitimer is necessary because I tested that it is installed per
thread rather than per process, even though SUSv3 says it should be
per process.
pthread_sigmask makes the thread holding the capability handle signals.
I've heard that the interaction of signals and threads is broken in
pre-NPTL Linux threads, I will have to check how it behaves and what
should be used in this case (perhaps having signals unblocked in all
threads).
--
__("< Marcin Kowalczyk
\__/ qrczak at knm.org.pl
^^ http://qrnik.knm.org.pl/~qrczak/
More information about the Haskell-Cafe
mailing list