C++でスレッドに引数を渡すには?
C++では、スレッドにパラメータを渡す方法は次のとおりです。
- スレッド関数の引数としてパラメータを渡す:
- #include
#includevoid myFunction(int パラメータ) {
std::cout << “スレッドパラメータ: ” << パラメータ << std::endl;
}int main() {
int パラメータ = 10;
std::thread myThread(myFunction, パラメータ);
myThread.join();
return 0;
} - この例では、myFunction はスレッド関数であり、parameter はスレッド関数に渡されるパラメータです。スレッド作成時に、引数リストに parameter を渡すことで、スレッド関数の引数として渡されます。
- ラムダ式でパラメータを渡す:
- スレッドにパラメータを渡す
- この例では、ラムダ式によって匿名関数を生成しており、関数本体でパラメータを使用している。パラメータを大括弧で囲って使用することでラムダ関数のキャプチャ変数とし、スレッドからアクセスできるようにする。
- 参照引数を渡すには std::ref を使用する。
- #include
#includevoid myFunction(int& parameter) {
std::cout << “スレッドパラメータ: ” << parameter << std::endl;
}int main() {
int parameter = 10;
std::thread myThread(myFunction, std::ref(parameter));
myThread.join();
return 0;
} - この例では、myFunction の引数は参照型です。std::ref を利用して parameter をラッピングし、スレッド関数に参照引数として渡しています。
これらの方法は C++ スレッドにパラメータを渡すよくある方法です。状況に応じて適切な方法を選択してください。