Justin Erenkrantz wrote:

On Tue, Jun 26, 2001 at 10:49:42AM -0700, Brian Pane wrote:

Please forgive me if this issue has been covered previously, but
I've been wondering lately about whether it would be useful to
add support for lightweight spin-locks as  a complement to the
current intraprocess locks in APR.  There are some places, like
the pool memory allocator, where a spinlock might perform better
than a pthread mutex.  Thoughts?


Well, I just about to write a message saying that we ought to remove the
mutexes from the pool memory allocator code ANYWAY. AFAICT, the pool
only needs to be locked when the pool is shared across workers - which only seems to be the case with the global or child pool. Locking the
pool should be the exception, not the norm. What Cliff just suggested
about APR_XTHREAD sounds like it could apply to the pool as well.


I'm all in favor of getting rid of the mutexes in the pool allocator code
where possible.  I think locking is inevitable, though, in order to handle
the allocation of new blocks for a pool--which seems to be where most
of the mutex lock/unlock behavior in the httpd is currently.  That's where
it would be nice to have a more lightweight alternative to a pthread mutex.

As far as spinlocks go, can these be done in a crossplatform way?  The
issue is that we need an atomic operation to do the spinlock in.

I think the implementation would have to be a set of N+1 architecture-specific
ifdef blocks: N containing the inline assembly directives for N supported
processors, and one containing a pthread mutex based fallback implementation.


--Brian




Reply via email to