gpt4 book ai didi

C++线程成员函数接收值

转载 作者:行者123 更新时间:2023-11-30 02:20:32 25 4
gpt4 key购买 nike

我有一个在线程中使用的类成员函数,我想用该线程设置类的值。

#include <thread>
#include <iostream>

using namespace std;

class foo
{
public:
void assign_value();
int value;
};

void foo::assign_value()
{
value = 1;
cout << "value within assign_vale() is " << value << '\n';
}


int main()
{
foo f;

thread t1(&foo::assign_value, f);
t1.join();

cout << "value in main is " << f.value << '\n';

return 0;
}

输出如下:

value within assign_vale() is 1
value in main is 0

我希望 f.value 也为 1;

说来话长我编写了一个巡线机器人,它必须被放置在一条线上,然后等待直到按下一个按钮。然后它测量光传感器的值并将该值作为目标值。我想将这个等待直到按下按钮编程为一个暂停的线程。稍后可以按下相同的按钮来停止作为分离线程的程序。但是,对于程序的所有后续部分,我无法从第一个线程正确获取值。

最佳答案

使用

  • thread t1(&foo::assign_value, std::ref(f));
  • thread t1(&foo::assign_value, &f);

当前,线程使用f的拷贝。

关于C++线程成员函数接收值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49578273/

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