Edward Hartnett
Edward Hartnett
It seems that this work must be done in each dispatch layer. For example, for netCDF/HDF5, in libsrc4 and libhdf5, we protect with a mutex each function that changes any...
What about my suggestion of protecting all functions that now change metadata? Seems like that would be easier than get/set functions, and would allow multiple threads to read the metadata...
Well if we lock the global data by struct instead, then the getter functions are the existing find_* functions, right?
If the file is opened read-only, do reads need to be locked?
Let me see if an example will help me understand. Here's some code from libhdf4: ``` static int hdf4_read_att(NC_FILE_INFO_T *h5, NC_VAR_INFO_T *var, int a) { NC_HDF4_FILE_INFO_T *hdf4_file; NC_ATT_INFO_T *att; NCindex...
Well crap, that's a lot of work.
Certainly we can turn off lazy reading (that is, force a read of all metadata on file open) in select cases. This could be trivially done with an NC_MULTITHREADED flag,...
Well this may be a case where the classic format pulls ahead. ;-)
It found libzstd. Could it be that you already have the zstandard filter installed in your HDF5 filter path? ;-)
Well imagine the poor netCDF user who has never heard of HDF5 plugins but wants to use this new compression. It won't work! :-) So we need to build the...