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;
}

执行结果:

C++11 – 使用std::thread在类内部以成员函数作为多线程函数执行异步操作-StubbornHuang Blog