将参数传递给ppl中的任务

时间:2015-10-22 07:56:54

标签: c++ ppl

我刚刚开始在Visual Studio中学习ppl,我开始学习任务。到目前为止一直很好,例如我了解基础知识。但是,如何创建接收参数的任务?也就是说,创建不带参数的任务是相当简单的,但是任何参数的任何参数对我来说都不是很明显。
任务创建任务不带任何参数很容易:

params[:sessions][:email]
  

无法真正传递任何参数。我该怎么做呢   如果我尝试将参数传递给lambda,我会收到编译错误。

2 个答案:

答案 0 :(得分:0)

传递给create_task的参数可以是lambda函数,如代码中所示。

那么问题就变成了如何将参数传递给lambda函数。

以下是几种lambda:

// basic lambda
auto func = [] () { cout << "A basic lambda" ; } ;

// lambda where variable is passed by value
auto func = [](int n) { cout << n << " "; }

// lambda where variable is passed by refrence
auto func = [](int& n) { cout << n << " "; }

// lambda with capture list
int x = 4, y = 6;
auto func = [x, y](int n) { return x < n && n < y; }

// lambda that explicitly returns an int type
auto func = [] () -> int { return 42; }

答案 1 :(得分:-1)

此链接提供了将字符串传递给任务的一个很好的示例。

https://msdn.microsoft.com/en-us/library/dd492427.aspx

示例代码是

return create_task([s] 
{
    // Print the current value.
    wcout << L"Current value: " << *s << endl;
    // Assign to a new value.
    *s = L"Value 2";
}).then([s] 
{
    // Print the current value.
    wcout << L"Current value: " << *s << endl;
    // Assign to a new value and return the string.
    *s = L"Value 3";
    return *s;
});