我正在将c++ 11线程库与类一起使用,并且工作正常。
我只需要对此代码的解释,以便我正确理解。

我的课

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::部分。
第二个参数是线程本身知道父进程的类本身吗?

我找不到对此的解释。只有代码,我想了解它。
谢谢!

最佳答案

&foo::work是必需的,因为work是属于foo类的成员函数。 (非静态)成员函数只能在已知其所属对象的情况下才能访问。
this参数是一个指向应调用该方法的对象的指针。

关于类中的C++ 11线程,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18592867/

10-13 08:08