structured_task_group 类

原创 2016年08月31日 09:31:24

structured_task_group 类

Visual Studio 2012

structured_task_group 类表示并行工作的高度结构化集合。 可以使用 task_handle 对象将各个任务排队至 structured_task_group 中,并等待它们完成,或在它们完成执行之前取消任务组,这将中止尚未开始执行的所有任务。

class structured_task_group;

Dd504799.collapse_all(zh-cn,VS.110).gif公共构造函数

名称

说明

structured_task_group::structured_task_group 构造函数

已重载。 构造新的 structured_task_group 对象。

structured_task_group::~structured_task_group 析构函数

销毁 structured_task_group 对象。 在析构函数执行之前,期望在对象上调用 wait 或run_and_wait 方法,除非由于异常析构函数作为堆栈展开的结果执行。

Dd504799.collapse_all(zh-cn,VS.110).gif公共方法

名称

说明

structured_task_group::cancel 方法

尽最大努力尝试取消位于该任务组的工作的子树。 如果可能,任务组上每个计划的任务将传递性取消。

structured_task_group::is_canceling 方法

通知调用方任务组当前是否正在取消中。 这不一定表示 cancel 方法会在 structured_task_group 对象上调用(尽管这样肯定会让该方法返回 true)。 它可能是这种情况:structured_task_group 对象正在执行内联,而工作树上部的任务组已被取消。 例如,在运行时可以提前确定取消将流过 structured_task_group 对象的情况下,也将返回 true

structured_task_group::run 方法

已重载。 在 structured_task_group 对象上安排轻量任务。 调用方管理 _Task_handle 形参中传递的 task_handle 对象的生存期。 采用参数 _Placement 的版本生成任务。偏重在执行该参数指定的位置。

structured_task_group::run_and_wait 方法

已重载。 在 structured_task_group 对象的帮助下安排任务在调用上下文上运行内联来获取完全取消支持。 如果将task_handle 对象作为参数传递给 run_and_wait,则调用方将负责管理 task_handle 对象的生存期。 该函数等待直到在structured_task_group 对象上的所有工作都已完成或取消。

structured_task_group::wait 方法

一直等待到 structured_task_group 上的所有工作完成或取消。

在使用 structured_task_group 对象上有诸多严格限制,以获取性能:

  • 多个线程不能使用一个 structured_task_group 对象。 structured_task_group 对象上的所有操作必须由创建该对象的线程都执行。 该规则的两个例外为成员函数 cancel 和 is_canceling 该对象可能未在 lambda 表达式的捕获列表中,并在某个任务中使用,除非该任务使用其中一个取消操作。

  • 计划到 structured_task_group 对象的所有任务均通过使用 task_handle 对象(您必须显示管理其生存期)进行计划。

  • 多个组可能只能按绝对嵌套顺序使用。 如果声明了两个 structured_task_group 对象,声明的第二个(内侧的)必须在任何方法之前析构,除非在第一个(外侧的)上调用了 cancel 或 is_canceling 在相同或功能嵌套的范围内声明多个 structured_task_group 对象的情况以及任务通过 run 或 run_and_wait 方法排队至 structured_task_group 时的情况下,该条件均为 true。

  • 与一般 task_group 类不同,structured_task_group 类中的所有状态都是最终的。 在您排入队列任务分组并等待其结束后,不能再次使用同一组。

有关更多信息,请参见 任务并行(并发运行时)

structured_task_group

标头:ppl.h

命名空间: 并发

版权声明:欢迎交流。

C++ 异步编程——task类(for VS11) 三

C++ 异步编程——task类(for VS11) 三 在之前我们介绍的异步操作都是基于Task更轻量级的异步调用方式。 在PPL中Concurrency::task_group和Concur...
  • lphbtm
  • lphbtm
  • 2016年08月25日 13:53
  • 1358

Java类的共同父类Object

Java.lang.Object类是所有Java类的最高层次父类。其内部不存在任何属性,但是存在几个经典方法如下:一.public int hashcode()–功能是返回当前对象的哈希码,系统会自动...
  • yao____yao
  • yao____yao
  • 2016年07月20日 19:08
  • 1312

所有类的基类——Object

Object public class Object java.lang.Object Class Object is the root of the class hierarch...
  • upset7117
  • upset7117
  • 2017年01月10日 15:22
  • 420

类和结构的区别

区别如下: 1.存储类型:结构是值类型,存储在
  • yikeshu19900128
  • yikeshu19900128
  • 2014年10月23日 17:02
  • 1779

UML类图中类与类之间的关系及画法

类与类之间的关系通常有4种,即依赖关系(Dependency)、泛化关系(Generalization)、关联关系(Association)、实现关系(Realization) 依赖关系(Depen...
  • ILOVESMJ
  • ILOVESMJ
  • 2016年07月18日 10:42
  • 1571

类内距离&类间距离

特征选择,就是降维。 特征选择之前需要进行类别可分性测度,最为直观的是基于距离的可分性测度:类内距离&类间距离 类内距离【Ref1】:类内距离 平方形式 即为: 类协方差矩阵迹的2倍。 2*tr...
  • ttxzszxy
  • ttxzszxy
  • 2016年10月25日 17:15
  • 4731

详解JS类概念的实现

众所周知,JS并没有类(class)的概念,虽然说ES6开始有了类的概念,但是,这并不是说JS有了像Ruby、Java这些基于类的面向对象语言一样,有了全新的继承模型。ES6中的类,仅仅只是基于现有的...
  • alex8046
  • alex8046
  • 2016年07月18日 11:27
  • 3577

如何对一个类进行扩展?

如何对一个类进行扩展? 在对类的处理中,我们会应用到的主要由四种方式, 一、    继承(inherit) 面向对象程序有三大特性,封装、继承、多态。    封装就是对一个类或者我们需要的一系...
  • V5V6_neil
  • V5V6_neil
  • 2014年07月06日 20:48
  • 745

java中顶级父类Object

Object作为java中所有类的父类,是因为在其中存放了一些使用频率非常高的方法,为了避免重复编写,所以写了一个顶级父类。public class Object { private sta...
  • colin_yjz
  • colin_yjz
  • 2015年07月04日 09:35
  • 1700

Java中几个常用类总结

一. System: 1.     首先是System类,因为从一开始从接触java起,我们就无时无刻都在接触它,经常用它来向屏幕,向控制台打印输出一些信息,System.out.println(“h...
  • hua631150873
  • hua631150873
  • 2013年09月17日 23:01
  • 10667
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:structured_task_group 类
举报原因:
原因补充:

(最多只允许输入30个字)