Open MPI logo

Hardware Locality Development Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all Hardware Locality Development mailing list

Subject: Re: [hwloc-devel] thread safety
From: Samuel Thibault (samuel.thibault_at_[hidden])
Date: 2010-03-12 03:01:28


Hello,

Jeff Squyres, le Thu 11 Mar 2010 17:34:59 -0800, a écrit :
> On Mar 11, 2010, at 3:57 PM, Samuel Thibault wrote:
>
> > > What *is* hwloc's policy about thread safety, anyway?
> >
> > It would be odd to not be threadsafe, considering the target
> > applications :) and I believe hwloc is already.
>
> Hmm. I'm not so sure. Consider:
>
> 1. thread A calls hwloc_topology_init(&a)
> 2. thread A calls hwloc_topology_load(a)
> 3. thread A launches thread B
> 4. thread B calls hwloc_topology_get_*(a...)
> 5. thread A calls hwloc_topology_load(a)

Well, yes, of course :)

I mean "thread-safe" like libc is thread-safe: if you call functions
that modify a buffer concurrently, you're hosed :) But all the reading
functions, or working on separate topology objects are fine to run in
parallel.

> It depends on exactly what you mean by "thread safe" (kinda like MPI's 4 different levels of thread support).

It's between THREAD_MULTIPLE (for read operations) and THREAD_SERIALIZE
(for write operations on the same object).

That being said, we could easily add a mutex which we take in write
operations to become completely THREAD_MULTIPLE-safe, as there aren't so
many write operations.

Samuel