【发布时间】:2011-03-07 10:54:41
【问题描述】:
现在这不是什么大问题,因为我已经实现了自己的集合,但对这个仍然有点好奇。
我有一个单例,它提供对各种公共组件的访问,它保存这些组件的实例和线程 ID,因此每个线程应该(并且确实,我检查过)拥有它自己的组件实例,例如 Oracle 数据库访问图书馆。
当运行系统(这是一个由 C# 应用程序调用的 C++ 库)时,有多个传入请求似乎一切正常运行了一段时间,但随后它因 AccessViolation 异常而崩溃。单步执行调试器时,问题似乎是当一个线程完成并清除它的会话信息(保存在 std::map 对象中)时,另一个线程的单独集合实例中保存的会话信息似乎也被清除了。
这是其他人遇到过或知道的吗?我试过环顾四周,但找不到任何关于此类问题的信息。
干杯
【问题讨论】:
-
“我有一个单身人士......”这就是问题所在。 :)
-
老实说,我很惊讶没有人早点这么说:)
标签: c++ multithreading stl