c++ スレッドを使用する方法
C++におけるスレッドは、std::threadクラスを使用することで作成および管理できます。以下はC++でスレッドを使用する方法を示す簡単なサンプルコードです。
#include <iostream>
#include <thread>
// 线程函数
void threadFunction() {
std::cout << "Hello from thread!" << std::endl;
}
int main() {
// 创建线程对象并传入线程函数
std::thread myThread(threadFunction);
// 主线程继续执行
std::cout << "Hello from main thread!" << std::endl;
// 等待线程执行完毕
myThread.join();
return 0;
}
上のコードでは、myThreadというスレッドオブジェクトを作成し、スレッド関数としてthreadFunctionをそのスレッドに渡しています。その後、メインスレッドは実行を続け、std::coutの文を実行した後にmyThread.join()を呼び出して、スレッドの実行完了を待ちます。
さらにスレッド関数に引数を渡すことも可能です。
#include <iostream>
#include <thread>
// 线程函数
void threadFunction(int n) {
std::cout << "Hello from thread! Number: " << n << std::endl;
}
int main() {
int numThreads = 5;
std::thread threads[numThreads];
// 创建多个线程对象,并传入线程函数和参数
for (int i = 0; i < numThreads; i++) {
threads[i] = std::thread(threadFunction, i);
}
// 主线程继续执行
std::cout << "Hello from main thread!" << std::endl;
// 等待所有线程执行完毕
for (int i = 0; i < numThreads; i++) {
threads[i].join();
}
return 0;
}
この例では、5つのスレッドオブジェクトを含む配列を作成し、ループを使用してstd::threadコンストラクタを各スレッドオブジェクトで呼び出してスレッドを作成しました。各スレッドオブジェクトは異なる引数をスレッド関数threadFunctionに渡します。
スレッドを使用する場合は、共有リソースへのアクセスの処理に注意が必要で、競合状態とデータ競合の問題を避ける必要があります。共有リソースへの同期アクセスには、排他制御(std::mutex)を使用するか、他のスレッドセーフなコンテナやツールを使用できます。