解释此并发中的"="符号参数::任务调用

Explain the "=" sign parameter in this Concurrency::Task call

本文关键字:参数 任务 调用 符号 解释 并发      更新时间:2023-10-16

有人能向我解释一下'='参数在这段代码中的用途吗?我可以使用哪些其他参数来代替=?这会有什么不同?MSDN对这个问题不是很清楚。

//Declaration
auto prerequisite = task<void>([](){});
//Here is where I don't understand the '=' parameter
prerequisite.then([=](task<void> prerequisite){/*custom code goes here*/})

在lambda导入器(lambda开头的括号)中,可以指定捕获访问未作为参数传递的外部作用域的数据:

•[=]表示外部作用域通过值传递给lambda。因此,你可以阅读,但不能修改定义lambda的所有可读数据。

•[&]表示外部作用域通过引用传递给lambda。因此,只要您有写访问权限,就可以对定义lambda时有效的所有数据进行写访问。