如何将“ this”指针传递给C ++ WinAPI线程?

一些人

我正在尝试运行C ++线程,但也将实例传递给类本身。我似乎无法弄清楚。

我有一个线程参数的结构:

struct CLASS_PARAMS {
    SomeClass* ptr;
};

然后,我调用我的设置方法:

void SomeClass::setup() {
    CLASS_PARAMS params;
    params.ptr = this;
    CreateThread(NULL, 0, SetupThread, &params, 0, NULL);
}

在上面SomeClass::setup(),我定义SetupThread

DWORD WINAPI SetupThread(LPVOID lpParam) {
    CLASS_PARAMS* params = (CLASS_PARAMS *) lpParam;
    SomeClass* inst = params->ptr;
    ....
    ....
}

但是,在使用时,出现读取访问冲突inst我还有其他方法SomeClass需要通过线程访问:

inst->getSomeValue();
...
inst->setSomeValue(someValue);
...

但它不允许我。关于我在做什么错的任何建议吗?

亚历克斯·古铁涅夫

CLASS_PARAMS在堆栈上分配,因此在使用之前将其销毁。

动态分配它,传递指针并在线程中释放它。

另外,如果您只需要this传递,而无需包装结构就传递它,则只需要LPVOID前后转换即可(但请确保使用相同的类指针类型,以避免指针调整错误)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将结构传递给新线程(C ++)

来自分类Dev

如何将struct传递给新线程(C ++)

来自分类Dev

如何将参数传递给线程?

来自分类Dev

如何将指向类方法的指针传递给Boost线程

来自分类Dev

WinApi C多线程:如何等待线程完成?

来自分类Dev

如何将C ++指针传递给Fortran?

来自分类Dev

C指针,了解如何将数组传递给函数

来自分类Dev

C ++如何将“ this”传递给指针引用

来自分类Dev

如何将参数传递给C中的函数指针?

来自分类Dev

如何将值传递给指针参数C ++

来自分类Dev

如何将列表传递给Python工作线程?

来自分类Dev

如何将参数传递给Java线程?

来自分类Dev

如何将模板函数传递给POSIX线程(pthread)

来自分类Dev

如何将Swift数组作为参数传递给线程?

来自分类Dev

如何将列表传递给Python工作线程?

来自分类Dev

如何将本机方法传递给android中的线程?

来自分类Dev

如何将结构元素传递给异步线程?

来自分类Dev

将指向成员函数的指针传递给单独的线程

来自分类Dev

将指针地址与指针传递给C中的指针

来自分类Dev

如何将指针传递给指针向量?

来自分类Dev

c++ - 将向量传递给线程

来自分类Dev

将指针传递给C ++中的函数

来自分类Dev

将结构指针传递给函数c ++

来自分类Dev

C ++:将指针向量传递给函数

来自分类Dev

C ++将指针数组传递给函数

来自分类Dev

将char指针传递给C函数

来自分类Dev

C - 将指针传递给函数

来自分类Dev

如何将(非静态成员函数的)C ++函数指针传递给预定义的C函数?

来自分类Dev

如何将方法指针传递给结构(在C / C ++中)?