Subject: pthreads -/-> SMP Thread-safe
To: None <tech-userlevel@netbsd.org>
From: Brian C. Grayson <bgrayson@marvin.ece.utexas.edu>
List: tech-userlevel
Date: 09/13/1998 23:19:03
Before I go into gory details, it appears to me that the
pthreads system allows race conditions when used on an SMP
system. There are also `volatile's missing. Are these
well-known deficiencies of the pthreads pkg whose fixes have
been delayed until we get something up-and-running?
I can give examples of multi-CPU race conditions in
pthread_queue_enq(), for those interested. I looked at
FreeBSD's code, and they adopted the approach of adding
spinlocks to the top-level code, which I find non-ideal --- if
enqueuing requires an atomic action, then the atomic action
should be done in pthread_enqueue_enq(), and not in every
calling function. If performance is the reason, then gcc has
supported inlining for years now. :) But then again, I don't
know much about pthreads, only about hand-rolled SMP
synchronization.
Happy hacking!
Brian
--
"Anybody want to guess the answer?" -- Ken Richardson, Math 381, discussing
the equation for diffusion along an infinite line.