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