Jeff Squyres wrote: > 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) > > On the one hand, you could say that an app would be dumb to do this. But > OTOH, if we say that hwloc is "thread safe", it might be a reasonable > expectation to assume that multiple threads can read/write topologies > simultaneously and hwloc makes it safe. It depends on exactly what you mean > by "thread safe" (kinda like MPI's 4 different levels of thread support). > > Which do we want for hwloc? >
I don't think we want to support this. If somebody really wants the above, he wants two threads to work on different topologies, so he should use two different topology variables. I guess we a thread-safety section in hwloc.doxy to document that all topology modifiers (most of hwloc_topology_* functions, not all of them) cannot run concurrently. Brice