Does read-only HDF usage tolerate multi-threading? I was under the impression that enabling threading simply added a mutex around critical operations. Is there a difference between platforms, e.g. Linux & Windows?
Cheers, Sebastian On Thu, Jul 8, 2010 at 6:00 AM, Quincey Koziol <[email protected]> wrote: > Hi Richard, > > On Jul 7, 2010, at 3:47 AM, Richard Khoury wrote: > > > Hello, > > After writing an application that allows the user to flip between loading > and saving a H5 file, a few objects within the file weren't closing properly > which didn't allow the file to close when I called H5Fclose. Going from a > loading state (H5open) to a saving state (H5create or H5open with RDWR > access) complained that the file was still open so I implemented a simple > routine to close all open objects within a file before calling H5Fclose: > > > > void close_all_objects_within_file (hid_t file_id) > > { > > ssize_t numOpenObjs = H5Fget_obj_count(file_id, H5F_OBJ_ALL); > > hid_t *obj_id_list = (hid_t*)(malloc(numOpenObjs * sizeof(hid_t))); > > ssize_t numReturnedOpenObjs = H5Fget_obj_ids(file_id, H5F_OBJ_ALL, > numOpenObjs, obj_id_list); > > for (ssize_t i = 0; i < numReturnedOpenObjs; ++i) > > { > > H5Oclose(obj_id_list[i]); > > } > > free(obj_id_list); > > } > > > > This worked fine until the application became multi-threaded, and a call > to close_all_objects_within_file(file_id) was crashing the program. It seems > that the object resources are shared between the threads that have opened > the same file, and the first thread to call this routine kills any chance of > another thread to use that resource. Is this correct? > > Yes. > > > If this is case, is there a way I can check (in the for-loop above) if > the object is being referenced by another thread before doing an H5Oclose? > Or perhaps there's a better way to close all the resources of a file? Or > maybe I'm going about this the wrong way, in which case I'm very much open > to suggestions. > > You probably want to use the H5Pset_fclose_degree() routine. > > Quincey > > > _______________________________________________ > Hdf-forum is for HDF software users discussion. > [email protected] > http://mail.hdfgroup.org/mailman/listinfo/hdf-forum_hdfgroup.org >
_______________________________________________ Hdf-forum is for HDF software users discussion. [email protected] http://mail.hdfgroup.org/mailman/listinfo/hdf-forum_hdfgroup.org
