首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HDf5DotNet :文件关闭不同步?

HDf5DotNet :文件关闭不同步?
EN

Stack Overflow用户
提问于 2017-10-03 08:03:45
回答 1查看 217关注 0票数 0

描述

我们目前正在针对我们的hdf5抽象层编写测试。

我们有一个测试,确保dataset类型的更改不会影响我们的抽象层。为了测试这一点,每次要测试数据集类型更改时,我们都会创建一个新的hdf5文件。每次操作(读/写)之后,hdf5文件将关闭。

问题是,在调用hdf5 H5F.Close()时,文件中的修改似乎不是同步编写的。

当我们的测试在调试中执行时(使用一步一步的调试器),测试是工作得很好的。

在release中执行时,测试会中断,我们的抽象层读取数据集值,即上次修改之前的dataset 值(来自以前的dataset类型)。

我们还发现,如果在I/O操作之间使用Thread.Sleep(1000)执行测试,则在发布模式下的测试是正确执行的。

问题

  • 当调用为HDF5库时,您知道错误/遗忘了什么吗?
  • HDF5DotNEt中是否有一种方法可以使获取活动/打开对象的数量(数据集/组等.),因为H5Fget_obj_count不是在HDF5DotNet库中实现的。

编辑

10.2017年4-4

  • 我使用H5Fget_obj_count源代码构建了自己的版本,包括HDF5DotNet函数。关闭文件时,所有对象都将关闭。
  • 还实现了函数H5Pset_fclose_degree,以强制关闭程度对H5F_CLOSE_STRONG,没有任何改变。
  • hdf5文件可以在使用H5F.Close()后立即打开并具有写权限。

经测试/实施的解决方案

  • 在关闭文件之前强制H5F.Flush,没有任何效果。
  • 检查HDF5库中的每个对象是否已正确关闭,包括:
    • H5DataSetId
    • H5FileId
    • H5GroupId
    • H5AttributeId
    • H5DataTypeId
    • H5DataSpaceId
    • H5PropertyListId

  • 尝试查找来自C++ HDF5库的内存泄漏(错误始终来自相同的断言,读取值与HDF5文件内容相一致)

环境

  • 视听演播室2017
  • HDF5DotNet.x64 v1.8.9
  • NUNit v3.6.1
  • NUnit3TestAdapter v3.7.0

任何帮助都将不胜感激。谢谢你给我时间。

EN

回答 1

Stack Overflow用户

发布于 2017-10-05 09:11:38

来回答我自己的问题:

HDF5库正在运行良好的,错误来自我们的对象之一。

在测试期间,我正在更新缓存的对象。缓存上一次修改时间跟踪器的分辨率是第二种,在进行密集单元测试时不精确。由于这个对象在我们的HDF5文件中定义了模型,它导致读取前一个定义的类型,而不是预期的数据类型。

谢谢你抽出时间!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46539862

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档