代码之家  ›  专栏  ›  技术社区  ›  Daniel Auger

MS DAAB 4.1数据库对象是否为线程安全?

  •  0
  • Daniel Auger  · 技术社区  · 14 年前

    我遇到了一些代码,其中有一个singleton,它创建/重用msdaab数据库对象的静态实例。数据库对象是否在创建后线程安全?我在msdaab文档中找不到任何方法。

    1 回复  |  直到 14 年前
        1
  •  1
  •   Community kfsone    7 年前

    尽管 this answer 我认为正式的答案是不。

    我这么说的原因是 Database 在名为 parameterCache .

    项被添加到缓存中,也可以使用 ClearParameterCache() 方法,而不首先获取 参数缓存 .

    如果 清除参数缓存() 如果一个线程认为缓存中有一个项,那么另一个线程就可以清除缓存,当第一个线程去检索该项时,该线程已被删除并引发异常。

    好消息是如果 清除参数缓存() 从未调用,那么我期望的最坏情况是,最初可以多次派生参数,并多次(通过不同的线程)将其添加到缓存中。我还没有测试过它,但看起来它仍然可以工作(尽管它效率很低)。

    所以,实际上,只要你不打电话 清除参数缓存() 我觉得你应该没事。