Anycorn,
HDF5 может обрабатывать несколько потоков без внешней синхронизации, хотя записи все равно будут последовательными.Вы должны скомпилировать последнюю версию (1.8.6 от 05.05.2011) и запустить ./configure
с флагами --enable-threadsafe
и -with-pthreads=/pthreads-include-path/,/pthreads-lib-path/
.
Например:
./configure --enable-threadsafe -with-pthreads=/usr/include,/usr/lib
Что касается определения пространства данных для записи, самый простой способ - построить базовую прямоугольную гиперплоскость с использованием многомерного массива, значения ранга и функции H5Screate_simple
.Мои обычно следуют тем же шагам:
//NUM = Number of spaces in this dimension
//Create a 1 dimensional array
hsize_t dsDim[1] = {NUM};
//Create the 1x1xNUM data space (rank param = 1).
hid_t dSpace = H5Screate_simple(1, dsDim, NULL);
...
Create datasets using the dataspace
...
//Release the data space
H5Sclose(dSpace);
Надеюсь, это поможет!