gpt4 book ai didi

c++ - 多线程和类?

转载 作者:搜寻专家 更新时间:2023-10-31 00:22:05 25 4
gpt4 key购买 nike

这是我在使用多线程时遇到的问题。 proc 需要是静态的,这意味着我看到 2 个线程可以通信和共享数据的唯一方法是通过全局范围。这看起来不是很干净,也不是很OO。我知道我可以在类中创建静态 proc 函数,但它仍然是静态的。

例如,我想做的是以某种方式在类中有线程过程,这样例如:我可以创建一个 MD5 校验和类并有一个这些对象的数组,每个对象在它们自己的线程上检查它的散列,而UI 线程不受此影响,另一个类可以简单地跟踪句柄并在说“完成”或其他内容之前等待多个对象。通常如何克服这种限制?

最佳答案

如果你想在那里启动一个线程,你不能避免使用静态函数。但是,您可以(使用 Windows)将 this 指针作为参数传递,并在另一端使用它来输入类实例。

#include <windows.h>

class Threaded {
static DWORD WINAPI StaticThreadEntry(LPVOID me) {
reinterpret_cast<Threaded*>(me)->ThreadEntry();
return 0;
}

void ThreadEntry() {
// Stuff here.
}

public:
void DoSomething() {
::CreateThread(0, 0, StaticThreadEntry, this, 0, 0);
}
};

关于c++ - 多线程和类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3738167/

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