如何生成类函数的外部线程
How to make a extern thread of a class function
有一个关于使用成员函数启动线程
这是一个给定的例子:
#include <thread>
#include <iostream>
class bar {
public:
void foo() {
std::cout << "hello from member function" << std::endl;
}
};
int main()
{
std::thread t(&bar::foo, bar());
t.join();
}
但现在的问题是,我需要在不同的函数中使用线程变量,所以我需要将代码分为两部分,即std::thread t(&bar::foo, bar());
和t.join();
我在下面使用这个:
class A {
public:
std::thread t;
void foo();
void use0();
void use1();
}
A::foo()
{
}
A::use0()
{
std::thread t(&A::foo);
}
A::use1()
{
t.join();
}
我在说std::invoke : No match was found for the overloaded function
时出错。
我该怎么办?非常感谢!
-
要在另一个线程中执行非静态成员函数,还需要传递类的实例:
std::thread t(&A::foo, this);
-
您正在
use0
中创建一个本地std::thread
(并且在销毁std::thread::join
之前不会调用它)。改为分配给成员t
:t = std::thread(&A::foo, this);
-
类定义和成员函数定义中的返回类型(
void
s)后面缺少分号。
相关文章:
- 从不同线程使用int64的不同字节安全吗
- 删除一个线程上有数百万个字符串的大型哈希映射会影响另一个线程的性能
- 在C++中使用cURL和多线程
- 在计时器或主线程外部的命令上销毁/替换线程
- Qt的GUI线程在从外部对象调用方法时是否会在引擎盖下生成线程?
- 未解决的外部,其他线程让我感到困惑
- 如何生成类函数的外部线程
- 当来自外部库的线程不可预测地崩溃我的应用程序时,我该怎么办
- 在 C++11 中从外部终止线程
- 外部进程与线程和数据处理
- 未解析的外部符号接收线程(这是_beginthread的入口点)
- 通过写入外部变量来取消 c++ 线程是否安全/有效
- 线程更改变量值并查看其外部的更改
- 如果由另一个 OpenMP 程序调用,则外部调用的 OpenMP 程序仅使用一个线程运行
- 在MFC中实现多线程,以更新外部函数可访问的内部字典
- 如何在不使用全局变量的情况下通知外部线程主线程状态
- 在阻塞调用之前,外部变量对线程不可用
- 全局变量外部声明后的线程专用指令
- 线程安全并发调用外部命令在c++中
- 什么是英特尔 IPP 库中的外部线程?