在类中创建线程并在C ++类中使用它

时间:2016-09-01 18:56:09

标签: c++ multithreading oop

我需要在课堂上创建新的主题并使用它。 有些想法:

class Somethink
{
  public: 
    func_to_be_thread();
    init_func();
}

Somethink::init_func()
{
  std::thread newThread(func_to_be_thread);
}

int main()
{
  Somethink ss;
  ss.init_func();
}

编辑: 如何正确使用?我写的Everythink返回错误因为idk如何在类中使用参数(运行函数)类方法创建新线程。我的问题是如何正确地做到这一点?

2 个答案:

答案 0 :(得分:2)

如果您需要使用成员函数创建一个线程,您可以执行以下操作:

class Something
{
   public: 
     void func_to_be_thread();
     void func_to_be_thread_advanced(const char* arg1);

     std::thread init_func();
     std::thread init_func_with_param(const char *arg1);
}

std::thread Something::init_func()
{
  return std::thread(&Something::func_to_be_thread, this);
}

您也可以使用lambda和参数:

std::thread init_func_with_param(const char *arg1)
{
  return std::thread([=] { func_to_be_thread_advanced(arg1); });
} 

答案 1 :(得分:0)

你正在使用哪个C ++版本?你可以使用std :: thread只启动C ++ 11 ..如果你需要更多的语法帮助,你可以查看std::thread calling method of class Start thread with member function