#include <iostream>
#include <thread>
#include <unistd.h>
class MyClass {
public:
int a;
void operator()() {
modify();
}
void print() {
std::cout << "a: " << a << std::endl;
}
void modify() {
a = 63;
std::cout << "modify " << a << std::endl;
}
};
MyClass *obj = new MyClass;
void test() {
while (true) {
sleep(1);
obj->print();
}
}
int main() {
// 如果将obj指向的对象传递给std::thread 实际上传递的是副本
// 那么在该线程中调用modify() 修改的是副本的成员变量a
// 所以要用 std::ref(*obj) 传递指针指向的对象的引用
// std::thread t1(*obj);
std::thread t1(std::ref(*obj));
std::thread t2(test);
while (true) {
sleep(1);
}
return 0;
}
std::thread传递引用
最新推荐文章于 2024-07-22 23:30:26 发布