线程化传递字符串参数的 bool 函数

Threading a bool function passing string argument

我是线程的新手..但我了解了这个概念并且在过去几天一直在研究它。 但是现在我正在尝试创建一个调用 bool 函数并将字符串作为参数传递的线程。代码基本上是:

bool className::analyseData(const std::string& filename) {
  ...
  return true;
}

bool className::equalise(...) {
  ...
  const std::string filename0 = filenameBase + "_chip" + ss.str() + "_0";
  std::thread analyse_dat0(analyseData, &filename0);
  ...
  return true;
}

然后我从其他地方调用均衡。

但是当我尝试编译它时出现以下错误:

SpidrEqualisation_multi_threading.cpp:140:50: error:
no matching function for call to ‘std::thread::thread(<unresolved overloaded function type>, const string&)

std::thread analyse_dat0(analyseData, filename0);`

知道如何解决这个问题吗?

非常感谢您的帮助。

您不想将指针传递给该线程函数:

  std::thread analyse_dat0(analyseData, filename0); // omit the &
                                                    // address of operator

td::thread analyse_dat0(analyseData, &filename0); 中删除 &,因为您需要的是引用而不是 analyseData 中的指针。
您还需要提供一个对象,因为 analyseData 不是静态的。

为什么不使用 std::thread 而不是使用 std::thread 而得到 std::future 的结果呢?这要简单得多,IMO。

Class c; 
auto ft = std::async([&] { return c.analyseData("file.txt"); });    
bool result = ft.get();