C++STL 에서 스 레 드 를 만 드 는 세 가지 방법

12141 단어 C++다 중 스 레 드
stl thread 를 사용 하여 다 중 스 레 드 프로그램 을 작성 할 때 컴 파일 은-pthrad 를 추가 해 야 합 니 다.
함수 포인터 로 스 레 드 만 들 기
#include 
#include 

using namespace std;

void func(int id, int number)
{
        for(int i=0;i<number;++i)
        {
                cout<<id<<":"<<i<<endl;
        }
}

int main()
{
    thread t1(func, 1, 50);
    thread t2(func, 2, 50);
    t1.join();
    t2.join();
}

함수 대상 을 통 해 스 레 드 만 들 기
#include 
#include 

using namespace std;

class Counter
{
public:
        Counter(int id, int number)
                :mId(id), mNumber(number)
        {}

        void operator()() const
        {
                for(int i=0;i<mNumber;++i)
                        {cout<<mId<<":"<<i<<endl;}
        }
private:
        int mId;
        int mNumber;
};

int main()
{
        // using uniform initialization syntax
        thread t1{Counter{1,20}};

        // using named variable
        Counter c(2,30);
        thread t2(c);

        // using temporary
        thread t3(Counter(3,10));

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

        return 0;
}

멤버 함수 로 대상 만 들 기
#include 
#include 

using namespace std;

class Test
{
public:
        Test(int id, int number)
                :mId(id), mNumber(number)
        {}

        void func(string arg)
        {
                cout<<arg<<endl;
                for(int i=0;i<mNumber;++i)
                        {cout<<mId<<":"<<i<<endl;}
        }
private:
        int mId;
        int mNumber;
};

int main()
{
        Test test(1, 20);
        thread t{&Test::func, &test, "start"};
        t.join();

        return 0;
}

좋은 웹페이지 즐겨찾기