gpt4 book ai didi

c++ - 如何使用 C++11 线程类在单独的线程中执行类成员函数?

转载 作者:IT老高 更新时间:2023-10-28 22:19:30 26 4
gpt4 key购买 nike

我正在尝试使用 C++11 的 std::thread 类来运行一个类的成员函数以并行执行。

头文件的代码类似:

class SomeClass {
vector<int> classVector;
void threadFunction(bool arg1, bool arg2);
public:
void otherFunction();
};

cpp文件类似于:

void SomeClass::threadFunction(bool arg1, bool arg2) {
//thread task
}

void SomeClass::otherFunction() {
thread t1(&SomeClass::threadFunction, arg1, arg2, *this);
t1.join();
}

我在 Mac OS X 10.8.3 下使用 Xcode 4.6.1。我使用的编译器是 Xcode 附带的 Apple LLVM 4.2。

上面的代码不起作用。编译器错误说 "Attempted to use deleted function".

在线程创建行显示以下按摩。

In instantiation of function template specialization 'std::__1::thread::thread<void (SomeClass::*)(bool, bool), bool &, bool &, FETD2DSolver &, void>' requested here

我是 C++11 和线程类的新手。有人可以帮我吗?

最佳答案

实例应该是第二个参数,像这样:

std::thread t1(&SomeClass::threadFunction, *this, arg1, arg2);

关于c++ - 如何使用 C++11 线程类在单独的线程中执行类成员函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15734598/

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