C++ C++;并发销毁

C++ C++;并发销毁,c++,c++11,c++14,C++,C++11,C++14,我正在通读,以下是关于销毁令的执行情况: •定义一个静态持续时间对象,该对象列出 声明有序对象的组。将此列表称为 声明析构函数列表 •定义一个静态持续时间对象,该对象列出 在上下文中未初始化的执行顺序对象 声明顺序初始化。将此列表称为 执行析构函数列表 •定义一个线程持续时间对象,列出挂起的销毁。 将此列表称为线程析构函数列表 •开始初始化一组相对有序的 对象,创建一个空的线程析构函数列表。一套 在动态过程中执行的静态持续时间对象初始化 这组对象的初始化范围称为 初始化区域 •对于初始化区域内的

我正在通读,以下是关于销毁令的执行情况:

•定义一个静态持续时间对象,该对象列出 声明有序对象的组。将此列表称为 声明析构函数列表

•定义一个静态持续时间对象,该对象列出 在上下文中未初始化的执行顺序对象 声明顺序初始化。将此列表称为 执行析构函数列表

•定义一个线程持续时间对象,列出挂起的销毁。 将此列表称为线程析构函数列表

•开始初始化一组相对有序的 对象,创建一个空的线程析构函数列表。一套 在动态过程中执行的静态持续时间对象初始化 这组对象的初始化范围称为 初始化区域

•对于初始化区域内的每个动态初始化, 非原子性地将销毁插入到 线程析构函数列表。此列表将捕获本地函数 由于初始化的结果而初始化的对象 非本地对象。代码可以简单地插入到 静态分配节点的单链表

•完成初始化区域时,以原子方式移动 将线程析构函数列表作为 小组。代码可以简单到将原子插入到 静态分配节点的单链表。原子的 插入可以通过使用释放循环进行比较和交换来完成 将很快终止。循环头上的读取获取将被激活 在遍历列表之前必须执行此操作

•对于不在初始化区域内的每个动态初始化, 原子级地将破坏插入到 执行析构函数列表。代码可以像原子代码一样简单 插入到静态分配节点的单链表中。 插入的基本算法与上述相同

•程序退出时,迭代执行析构函数列表并 调用相应的析构函数。完成这些步骤后,迭代 声明析构函数列表并启动相应的组 同时销毁。在每个组中,依次迭代 析构函数列表


并发销毁意味着什么?它应该如何实现?

您链接的论文是关于某些类型的构造和销毁,包括全局静态和函数范围静态,例如:

class MyClass {
    const std::string& func() {
        static std::string str = "";
        str.push_back('?');
        return str;
    }
};

static MyClass myGlobal;
正如本文所讨论的,在某一点上,
str
需要销毁,如果在这之后调用
func()
,这就是一个问题


这篇论文的目标是编译器作者,而不是应用程序程序员。在编写应用程序甚至大多数库代码时,您通常不需要担心这些问题,尤其是在避免使用全局和函数级静态变量的多线程情况下。

“提供一些示例”在这里并不是一个有效的问题。你能不能把你的问题重新表述得具体而简洁,而不是写在别处的一堵墙?并发破坏意味着什么?对不起,因为我自己无法理解这个话题,所以我要求用一些例子进行解释?示例使理解变得简单得多