gpt4 book ai didi

c++ - C++/Clr 中 C++ 全局实例的多线程

转载 作者:太空宇宙 更新时间:2023-11-04 12:52:31 24 4
gpt4 key购买 nike

我有一个类有 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com