c++ - 在 C++ 中使用对象的函数创建线程

标签 c++ multithreading

我是初学者,我使用的是 Visual Studio C++ 2015。我总是看到这样的线程创建:

thread nameThread(functionName);

问题是:如何创建使用一个对象的函数成员的线程,而这个函数需要一个指向另一个对象的属性的指针?像这样:

if(something == true){
  thread nameThread( object.function( &anotherObject.attribute ) );
}
.
.
.
nameThread.join();

非常感谢。

最佳答案

在过去,我们不得不使用黑魔法来做到这一点。但是 std::thread 足够聪明,可以为我们“自动”实现它提供重载:

std::thread nameThread(
   &theTypeOfObject::function,  // function to invoke
   &object,                     // first arg (implicit "this" pointer)
   &anotherObject.attribute     // second arg (first one you see)
);

关于c++ - 在 C++ 中使用对象的函数创建线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32809489/

相关文章:

c++ - 可移植检测 __VA_OPT__ 支持?

c++ - 是什么导致了模板和继承中出现这种令人困惑的编译器错误?

java - 使用 RSA Cipher 的线程安全

c++ - 如何解析语法简单的输入命令?

c++ - "long long = int + int "先计算,再类型转换?

c++ - 从循环位集中切出一个子串

php - MYSQL统计

Java SwingWorker 锁定 GUI

c# - 如何在.net中同时处理目录中的文件

两个线程可以使用相同的线程过程吗?