C++ のスレッドは thread クラスで生成し、join で回収する2020年10月01日 12時51分38秒

C++11 からはスレッドのサポートが言語の一部になった。thread クラスのコンストラクタに実行を始める関数を渡すと、スレッドを生成され実行が始まる。また、join() で終了したスレッドを回収する。
% cat thread.cpp
#include <thread>
#include <iostream>

void print()
{
    std::cout << "THREAD" << std::endl;
}

int main()
{
    std::thread t( print );

    std::this_thread::sleep_for( std::chrono::seconds( 5 ) );

    t.join();

    std::cout << "DONE" << std::endl;
}
コンパイルして実行した結果。スレッドライブラリを使うので -lptherad が必要になる。
% c++ -std=c++11 thread.cpp -lpthread
% ./a.out 
THREAD
DONE
五秒間待った後に DONE が表示される。

前回次回