调用另一个类中返回数据的函数的线程



我正在努力理解c++中的多线程。我试图调用一个函数在另一个类使用两个线程如下所示。此函数还返回数据。

vmgr.h

class VMGR{
public:
int helloFunction(int x);

};

vmgr.cpp

#include"vmgr.h"
#include<iostream>
int VMGR::helloFunction(int x){
std::cout<< "Hello World="<< x << std::endl;

return x;
}

main.cpp

#include <stdlib.h>
#include <fstream>
#include <iostream>
#include "vadd.h"
#include<iostream>
#include<thread>
#include<chrono>
#include<algorithm>
#include "vmgr.h"
using namespace std::chrono;

int main(int argc, char* argv[]) {

VMGR vm;

std::thread t1(&VMGR::helloFunction, vm, 20);
std::thread t2(&VMGR::helloFunction, vm, 30);

t1.join();
t2.join();


return 0;
}

我从线程返回值的语法不正确。请帮助我如何处理返回值。提前谢谢你。

从线程中获取结果最简单的方法是使用多个指针。

我的简单解决方案如下:

#include<iostream>
#include<thread>
using namespace std::chrono;
class VMGR {
public:
void helloFunction(int x, int *res);
};
void VMGR::helloFunction(int x, int *res) {
std::cout << "Hello World=" << x << std::endl;
*res = x;
}
int main(int argc, char* argv[]) {
VMGR vm;
int outputs[2];
std::thread t1(&VMGR::helloFunction, vm, 20, &outputs[0]);
std::thread t2(&VMGR::helloFunction, vm, 30, &outputs[1]);
t1.join();
t2.join();
for (auto n : outputs)
std::cout << n << std::endl;
}

但是,上面是too简单的代码。如果你的hellofunction ()"有副作用,必须添加同步代码。

相关内容

  • 没有找到相关文章

最新更新