是否可以将操作作为参数传递而不必声明全局函数?

时间:2016-03-05 17:16:37

标签: c++ multithreading function

我正在尝试将一些计算分配到不同的线程中。大多数计算都需要几行代码,但需要时间来处理。

为了便于阅读,我不想为每个将被线程化的代码声明一个全局函数。

是否可以使用类似于以下的符号来调用线程?

thread t1( 
          for(int i=0;i<largeNumber;i++){
              operation1;
              operation2;
              ...
          }                                );//End of t1
//other threads
t1.join();

换句话说,我可以将函数作为参数传递,而不必在全局范围内定义它吗?

(对不起,如果这是一个基本问题,我找不到合适的词来搜索)

1 个答案:

答案 0 :(得分:3)

使用lambda函数:

thread t1( [] () { // This is lambda
          for(int i=0;i<largeNumber;i++){
              operation1;
              operation2;
              ...
          } });//End of t1
//other threads
t1.join();