C++でオブジェクトをマルチスレッド化する方法

C++では、オブジェクトは複数のスレッドを作成することで並行実行できます。一般的な方法を以下に示します。

  1. タスクを実行するためのクラスを作成して定義します。
class MyTask {
public:
void operator()() {
// 执行任务的代码
}
};
  1. スレッド
int main() {
MyTask task; // 创建任务对象
std::thread t1(task); // 创建第一个线程,并将任务对象作为参数传入
std::thread t2(task); // 创建第二个线程,并将任务对象作为参数传入
// 等待线程完成
t1.join();
t2.join();
return 0;
}

上のコードでは、MyTaskクラスのオブジェクトtaskを作成し、std::threadクラスを使用して2つのスレッドt1とt2を作成しています。この2つのスレッドはどちらもMyTaskクラス内のタスクを実行しています。join()関数を呼び出すことでこの2つのスレッドが完了するまで待ってから、プログラムは終了します。

なお、複数のスレッドが同一のオブジェクトや共有リソースに同時にアクセスすると競合状態やデータ競合が起こる可能性があります。このような問題を避けるために排他制御やその他の同期メカニズムを利用して、共有リソースへのアクセスを保護してください。

bannerAds