我有一个类有 2 个方法,比如连接和断开连接。现在,当我调用 B 类时,我会使用该地址获取 A 的地址,我将使用该地址进行连接,完成后我必须调用 C 类以在同一地址上执行断开连接操作。
如果我将 A *a 作为全局变量,我可以实现这一点。但是当谈到多线程时,A 是全局的,只使用一个地址/实例,并且它在其他线程运行之前断开连接,导致访问冲突异常。
如何解决?提前致谢。
class A()
{
Connect();
Disconnect();
};
A *a = nullptr;
class B()
{
a = new A();
a->Connect();
}
class C()
{
if(!a)
a->Disconnect();
}
最佳答案
首先,您在 c 类中的 if 条件不正确。应该是if(a)。 因为如果一个变量有 null 值那么它可以通过你的 if 条件并且你想调用 null 变量的 disconnect 方法。 其次,您应该考虑在 b 类线程之后运行 c 类线程。
关于c++ - C++/Clr 中 C++ 全局实例的多线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48337960/