C++でクラスのパブリック関数を使用してスレッドを初期化する方法


  1. std::threadを使用してスレッドを初期化する方法:
#include <iostream>
#include <thread>
class MyClass {
public:
    void myFunction() {
        // スレッドで実行されるコード
        std::cout << "Hello from myFunction!" << std::endl;
    }
};
int main() {
    MyClass obj;
    std::thread myThread(&MyClass::myFunction, &obj); // スレッドの初期化
    // スレッドの実行待ち
    if (myThread.joinable()) {
        myThread.join();
    }
    return 0;
}
  1. ラムダ式を使用してスレッドを初期化する方法:
#include <iostream>
#include <thread>
class MyClass {
public:
    void myFunction() {
        // スレッドで実行されるコード
        std::cout << "Hello from myFunction!" << std::endl;
    }
};
int main() {
    MyClass obj;
    std::thread myThread([&]() {
        obj.myFunction();  // クラスのパブリック関数を呼び出す
    }); // スレッドの初期化
    // スレッドの実行待ち
    if (myThread.joinable()) {
        myThread.join();
    }
    return 0;
}

これらの方法では、std::threadクラスを使用してスレッドを初期化し、クラスのパブリック関数を指定することでスレッドが実行されます。std::threadのコンストラクタには、関数ポインタまたは関数オブジェクトを渡すことができます。また、メンバ関数を呼び出す場合は、オブジェクトへのポインタも渡す必要があります。

これらの例では、MyClassというクラスが定義されており、その中にmyFunctionというパブリック関数があります。この関数がスレッドで実行されるコードとなります。main関数内でMyClassのオブジェクトを作成し、スレッドの初期化を行っています。

以上のコード例を参考にして、C++でクラスのパブリック関数を使用してスレッドを初期化する方法を理解していただければと思います。