gpt4 book ai didi

c++ - 从另一个 thead 访问类函数?

转载 作者:行者123 更新时间:2023-11-28 08:28:18 27 4
gpt4 key购买 nike

我的类中有一个函数,它创建一个线程并为其提供参数以调用属于该类的函数,但由于线程过程必须是静态的,所以我无法访问该类的任何成员。不使用cpp文件中的一堆静态成员临时给要操作的数据怎么办,这看起来很慢。

这是我的意思的一个例子:

在cpp文件中:

void myclass::SetNumber(int number)
{
numberfromclass = number;
}

void ThreadProc(void *arg)
{

//Can't do this
myclass::SetNumber((int)arg);
}

我不能那样做,因为 SetNumber 必须是静态的,但我经常实例化我的类,所以这行不通。

我能做什么?

谢谢

最佳答案

通常您将myclass 的对象地址指定为arg 类型并将其转换到ThreadProc 中。但是你会被阻止如何传递 int 参数。

void ThreadProc(void *arg)
{
myclass* obj = reinterpret_cast<myclass*>(arg);
//Can't do this
obj->SetNumber(???);
}

正如您所说,这可能不仅有点慢,而且还会使代码困惑。我建议使用 boost::bind对于参数绑定(bind)和以独立于操作系统的方式创建线程(至少对于您自己的源),您可以使用 boost::thread .那么您的线程就不需要静态方法了。

现在在 C++0x 标准中,这里是一个 small tutorial

关于c++ - 从另一个 thead 访问类函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3189436/

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