Anycorn,
HDF5 может обрабатывать несколько потоков без внешней синхронизации, хотя запись еще будет последовательной. Вы должны скомпилировать последнюю версию (1.8.6 от 4/5/2011) и запустить ./configure
с флагами --enable-threadsafe
и -with-pthreads=/pthreads-include-path/,/pthreads-lib-path/
.
Например:
./configure --enable-threadsafe -with-pthreads=/usr/include,/usr/lib
Что касается определения DataSpace для записи, самый простой способ состоит в построении основной прямоугольную гиперплоскости с использованием многомерного массива, значения ранга и функций 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);
Надеюсь, это поможет!
Хороший вопрос и хороший ответ, пожалуйста, поддержите и примите – fabrizioM