【发布时间】:2020-09-20 03:34:51
【问题描述】:
我正在阅读Dynamic Initialization and Destruction with Concurrency,下面是关于销毁顺序的实现:
• 定义一个静态持续时间对象,该对象列出待处理的销毁 声明排序的对象组。将此列表称为 声明-析构函数列表。
• 定义一个静态持续时间对象,该对象列出待处理的销毁 未在 a 的上下文中初始化的按执行顺序的对象 声明顺序初始化。将此列表称为 执行析构函数列表。
• 定义一个列出待处理破坏的线程持续时间对象。 将此列表称为线程析构函数列表。
• 当开始初始化一组相对有序的 对象,创建一个空的线程析构函数列表。该组 在动态中执行的静态持续时间对象初始化 这组对象的初始化范围称为 初始化区域。
• 对于初始化区域内的每个动态初始化, 非原子地在头部插入破坏 线程析构函数列表。此列表将捕获函数本地 由于初始化的结果而初始化的对象 非本地对象。代码可以像插入到 具有静态分配节点的单链表。
• 当完成一个初始化区域时,原子地移动 线程析构函数列表作为声明析构函数列表 团体。代码可以像原子插入一样简单 具有静态分配节点的单链表。原子的 插入可以通过一个比较和交换与释放循环来完成,它 将迅速终止。循环头部的读取获取将是 在遍历列表之前是必需的。
• 对于不在初始化区域内的每个动态初始化, 原子地在头部插入破坏 执行析构函数列表。代码可以像原子一样简单 插入到具有静态分配节点的单链表中。 插入的基本算法和上面一样。
• 在程序退出时,遍历执行析构函数列表并 调用相应的析构函数。完成后,迭代 声明-析构函数列表并启动相应的组 同时销毁。在每个组内,依次迭代 析构函数列表。
Destruction with Concurrency 是什么意思,应该如何实现?
【问题讨论】:
-
“提供一些例子”在这里并不是一个真正有效的问题。您能否将您的问题重新表述为具体而简洁,而不是在别处写成一堵墙?
-
并发破坏是什么意思?抱歉,因为我自己无法理解该主题,因此要求用一些示例进行解释?示例使理解更简单