Quincey Koziol wrote:
I just ran into the problem, that my c++ HDF5 application has to be thread safe. I stumbled across a post 2 years ago, which desribes that --enable-threadsafe _and_ --enable-cxx does not work together.
I guess this is still up to date, since the configuration aborts with the configuration error "incompatible flags".
We don't test that configuration (because we don't have any demand from organizations that fund our company), so it might work without any problem, but we're not sure. If you'd like to give it a try, you can use the "--enable-unsupported" configure flag and see if things are working for you.
To make a long story short:
Using --enable-unsupported works under linux and windows 7 or higher.
My application has to operate under Windows XP. So I "replaced" the InitOnceExecuteOnce() call with boost::call_once. My test case of writing and reading multiple HDF5 files passes without any problems, so I anticipate that the application is thread safe, but shows a strange behavior if only H5::H5File::isHdf5() is called:
If the application invokes H5::H5File::isHdf5() and terminates right after it, HDF5 reports a "infinite loop closing library".
If the application invokes H5::H5File::isHdf5() and opens the file for read/write access, the application completes without any errors. The same if H5::H5File::isHdf5() is not invoked at all. boost::call_once is invoked in all three cases. However, the error only occurs under windows so I guess it is because of my hack.
In order to fix this:
Can anyone guess what the problem is?
I can not see a reason why the application terminates with this error after invoking isHdf5 without any further operations.
What does the sequence of letters mean and if it is not important, can I suppress this warning?
On May 27, 2011, at 1:30 PM, Mathias Wilhelm wrote: