1 使用std::thread在类内部创建多线程函数
在有些应用场景下,需要在某个类中以某个成员函数作为异步线程函数,或者需要多线程去执行某个耗时操作的成员函数。在这种应用场景下,知道如何在类内部以成员函数创建多线程函数就是一个比较基础的问题。
1.1 代码示例
demo代码如下:
#include <iostream>
#include <thread>
class ThreadTest
{
public:
ThreadTest()
{
}
virtual~ThreadTest()
{
}
public:
void StarThead()
{
std::thread t_thread(&ThreadTest::ThreadFunc, this);
std::thread t_threadOneParam(&ThreadTest::ThreadFuncWithOneParam, this,1);
std::thread t_threadTwoParam(&ThreadTest::ThreadFuncWithTwoParam, this, 1, 2);
if (t_thread.joinable())
{
t_thread.join();
}
if (t_threadOneParam.joinable())
{
t_threadOneParam.join();
}
if (t_threadTwoParam.joinable())
{
t_threadTwoParam.join();
}
}
void ThreadFunc()
{
std::cout << "ThreadFunc running" << std::endl;
}
void ThreadFuncWithOneParam(int a)
{
std::cout << "ThreadFuncWithOneParam running" << std::endl;
}
void ThreadFuncWithTwoParam(int a, int b)
{
std::cout << "ThreadFuncWithTwoParam" << std::endl;
}
};
int main()
{
ThreadTest thread_test;
thread_test.StarThead();
getchar();
return 0;
}
执行结果:
本文作者:StubbornHuang
版权声明:本文为站长原创文章,如果转载请注明原文链接!
原文标题:C++11 – 使用std::thread在类内部以成员函数作为多线程函数执行异步操作
原文链接:https://www.stubbornhuang.com/1671/
发布于:2021年09月09日 9:37:13
修改于:2023年06月26日 21:17:55
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
评论
52