クラスで c++11 スレッド ライブラリを使用していますが、正常に動作します。
このコードの説明が必要なだけなので、正しく理解できます。
私のクラス.h
class foo {
private:
std::thread t1;
void worker();
public:
void work();
};
class.cpp
#include "class.h"
void foo::worker() {
std::cout << "worker..." << std::endl;
}
void foo::work() {
t1 = std::thread(&foo::worker, this);
t1.join();
}
そして今、main.cpp
#include "class.h"
int main(int argc, char **argv) {
foo bar;
bar.work();
}
私が本当に理解していないのは、スレッドのクラス関数の呼び出しです。
私はこの呼び出しを次のように使用std::thread(&foo::work, this)
および解釈します。最初のパラメーターは関数へのポインターですが、その&foo::
部分なしで呼び出すことができない理由がわかりません。2 番目のパラメーターは、スレッドが親プロセスを認識しているクラス自体ですか?
これについての説明が見つかりませんでした。コードのみと私はそれを理解したいと思います。ありがとう!