Hi Matt, On Jun 27, 2011, at 11:49 AM, Matthew Chambers wrote:
> Due to the C++ bindings not being thread-safe, I was hoping to turn off > thread-safety in the C core and handle synchronization in my code. This > turned out to be impossible because the HDF5 core uses global, > non-thread-specific data structures when H5_HAVE_THREADSAFE is undefined. > There does not appear to be a way to turn off internal synchronization while > keeping thread or instance specific data structures. That would be useful. > SQLite has good semantics for thread safety: > > http://www.sqlite.org/compile.html#threadsafe >> This option controls whether or not code is included in SQLite to enable it >> to operate safely in a multithreaded environment. The default is >> SQLITE_THREADSAFE=1 which is safe for use in a >> multithreaded environment. When compiled with SQLITE_THREADSAFE=0 all >> mutexing code is omitted and it is unsafe to use SQLite in a multithreaded >> program. When compiled with >> SQLITE_THREADSAFE=2, SQLite can be used in a multithreaded program so long >> as no two threads >> attempt to use the same database connection at the same time. > > At the very least it would be useful if the documentation specifies that > H5_HAVE_THREADSAFE controls both the use of global data structures and > synchronization. I had to dig into the code to understand it. Hmm, what are you thinking of when you say the HDF5 library uses global, non-thread-specific data structures? (We try to eliminate those, and if you can point us to something we've missed, we can probably fix it) Quincey _______________________________________________ Hdf-forum is for HDF software users discussion. [email protected] http://mail.hdfgroup.org/mailman/listinfo/hdf-forum_hdfgroup.org
