C++でマルチスレッドを作成するには?
C++では、スレッドの作成にはいくつかの方法があります。一般的な方法を以下に示します。
- cppのstd::threadクラスは、C++標準ライブラリでスレッドの作成や管理に使用するクラスです。std::threadオブジェクトを作成し、実行する関数や関数のパラメターなどを渡してスレッドを作成します。
#include <iostream>
#include <thread>
void myFunction(int arg) {
// 线程执行的代码
std::cout << "Hello from thread! Arg: " << arg << std::endl;
}
int main() {
int arg = 10;
// 创建线程并启动
std::thread myThread(myFunction, arg);
// 等待线程执行完毕
myThread.join();
return 0;
}
- 関数のポインタを利用:直接関数ポインタを使ってスレッドを生成できます。
#include <iostream>
#include <thread>
void myFunction(int arg) {
// 线程执行的代码
std::cout << "Hello from thread! Arg: " << arg << std::endl;
}
int main() {
int arg = 10;
// 创建线程并启动
std::thread myThread(&myFunction, arg);
// 等待线程执行完毕
myThread.join();
return 0;
}
- lambda式の使用: スレッドを生成するためにラムダ式を使用できます。
#include <iostream>
#include <thread>
int main() {
int arg = 10;
// 创建线程并启动
std::thread myThread([&]() {
// 线程执行的代码
std::cout << "Hello from thread! Arg: " << arg << std::endl;
});
// 等待线程执行完毕
myThread.join();
return 0;
}
スレッドはこれらのいずれかの方法を使用して作成することができ、join() メソッドを使用してスレッドの実行が完了するのを待つことができます。ただし、スレッドの作成と管理は注意深く処理する必要があります。特に、スレッド間の同期と相対排他の問題です。