有什么方法可以将参数传递给线程中的函数吗?

时间:2014-03-16 21:26:09

标签: c++ multithreading c++11

示例:

std::thread t1(function(8, 9));

这对我不起作用。也许有办法做到这一点。提前谢谢。

1 个答案:

答案 0 :(得分:5)

std::thread t1 (function (8, 9));

在上面的代码段中,我们会使用t1返回值初始化function(8,9),正如您所说,它不是您想要的。


相反,您可以使用定义的constructor of std::thread将可调用对象作为其第一个参数,而不是在调用它时应该传递给它的参数。

std::thread t1 (function, 8, 9);

见这个简单的例子:

#include <iostream>
#include <thread>

void func (int a, float b) {
  std::cout << "a: " << a << "\n";
  std::cout << "b: " << b << "\n";
}

int main () {
  std::thread t1 (func, 123, 3.14f);

  t1.join ();
}

a: 123
b: 3.14