题
HDF5是否能够自己处理多个线程,还是必须外部同步? OpenMP示例建议后者。
如果前者,定义dataspace写入的正确方法是什么?
解决方案
Anycorn,
HDF5可以处理多个线程而无需外部同步,尽管书写仍然是串行的。您应该编译最新版本(截至2011年4月5日)并运行 ./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);
希望这可以帮助!
不隶属于 StackOverflow