是否有某种方法可以使C ++类中的一个函数在不同的线程中运行
is there some method to make one function in c++'s class to run in different thread
如果我有一个类,是否有一些方法可以生成第二个线程并调用另一个函数?以下是我的测试,但无法工作。
#include <iostream>
#include <thread>
class A
{
public:
void print_A();
void print_B();
};
void A::print_A()
{
std::cout << "in print_A and now need to create another thread and in this thread call print_B" << std::endl;
std::thread t1(&A::print_B);
t1.join;
}
void A::print_B()
{
std::cout << "print_B" << std::endl;
}
int main()
{
A a;
a.print_A();
return 0;
}
您应该使用std::async
:
#include <future>
void A::first_fun()
{
auto future = std::async(&A::second_fun, this);
return future.get();
}
请注意,future.get()
将阻止等待线程完成。
如果您希望稍后在代码中等待它的完成,则可以返回future对象并稍后调用.get()
方法。
嗯。。你可以做这样的事。。
#include <iostream>
#include <thread>
class A
{
public:
void print_A();
void print_B();
};
void A::print_A()
{
std::cout << "in print_A and now need to create another thread and in this thread call print_B" << std::endl;
//the changes needed
std::thread t1(&A::print_B, this);
t1.join();
}
void A::print_B() { std::cout << "print_B" << std::endl; }
int main() { A a; a.print_A(); return 0; }
注意:更正了一个打字错误
相关文章:
- 函数向量_指针有不同的原型,我可以构建一个吗
- 为什么在没有显式默认构造函数的情况下,将另一个结构封装在联合中作为成员的结构不能编译
- 创建一个函数以在输入为负数或零时输出字符串.第一次执行用户定义的函数
- 基于另一个成员参数将函数调用从类传递给它的一个成员
- 如何仅为一个函数添加延迟
- 构造函数正在调用一个使用当前类类型的函数
- C++-试图将函数指针推回到另一个CPP文件中的矢量时出错
- 有一个打印语句的函数是一种糟糕的编程实践吗
- 有没有什么方法可以使用一个函数中定义的常量变量,也可以由c++中同一程序中的其他函数使用
- 输入到文件并输出到另一个文件,并将流文件传递给函数
- 我不明白为什么我声明一个空的内部结构并将其传递给构造函数
- 如何创建函数管道,以便函数一个接一个地运行?
- 如何巧妙地编写两个函数——一个用于检查是否存在解决方案,另一个用于获取所有解决方案
- 在c++中的复制构造函数/一个声明语句中的初始化的延续中使用chain方法
- C :基类调用自己的虚拟函数 - 一个反图案
- 如何在这个交换函数(一个单独的链表)中找到错误
- 两个相同的函数(一个使用模板模式,另一个不使用)
- 你怎么能一次给一个函数一个参数呢
- 为什么要做两个函数?(一个是非const,另一个是const)
- 当代码在其他地方使用时,如何保证函数一个接一个地被调用