- 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;
}
- ラムダ式を使用してスレッドを初期化する方法:
#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++でクラスのパブリック関数を使用してスレッドを初期化する方法を理解していただければと思います。