Linux 下 C++ Promise.set_value 失败并出现未知错误

2023-11-30

我正在尝试让我的模拟在我们的高性能服务器上运行。它(不幸的是)使用 CentOS Linux 版本 7.7.1908(核心)而不是我正在开发程序的 Win10。随之而来的是大量错误,其中一个我无法修复:

#include <future>
#include <iostream>

int main(int argument_count, char** arguments) {
    int i = 1234;
    std::cout << "Initialized i" << std::endl;

    std::promise<int> promise;
    std::cout << "Constructed promise" << std::endl;

    promise.set_value(std::move(i));
    std::cout << "Set value" << std::endl;

    std::future<int> future = std::move(promise.get_future());
    std::cout << "Retrieved future" << std::endl;

    int j = std::move(future.get());
    std::cout << "Got value: " << j << std::endl;

    return 0;
}

当在 Win10 下使用“cl test.cpp”编译此文件时,输出看起来像我期望的那样:

桌面>测试.exe

初始化我

构建的承诺

设定值

检索未来

获得价值:1234

另一方面,当使用“g++ -std=c++11 test.cpp”在服务器上编译时,输出有所不同:

〜/ test_dir $ ./a.out

初始化我

构建的承诺

抛出“std::system_error”实例后调用终止

什么():未知错误-1

Aborted

在使用 Ubuntu 16.04.6 LTS 机器尝试此操作时,我确实遇到了同样的错误。我不明白为什么会发生这种情况。 显然,这一行有可疑之处:promise.set_value(std::move(i))因为打印之前的输出并且该语句之后的行不再执行。此外,编译器/链接器确实找到了两个版本“void set_value (const T& val);”之一。或“void set_value (T&& val);”这对于模板规范“int”是合适的,我强烈怀疑后者。

但是为什么当设置一个整数作为 Promise 的值时程序会中止呢?即使内联值并一起跳过变量也会产生错误。

有人能指出我的错误在哪里吗?


尝试使用编译pthread flag:

g++ -std=c++11 test.cpp -pthread

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux 下 C++ Promise.set_value 失败并出现未知错误 的相关文章

随机推荐

  • 使用列表列表创建子报表

    我有一个目标列表 每个目标都有另一个 ArrayList 我希望使用子报表显示子 ArrayList 中的详细信息 我想要子 ArrayList 中的每个对象都有一个子报告 我面临的问题是 我似乎找不到一种方法来指定子报表的 ArrayLi
  • Git:多个项目可以使用相同的子模块工作副本吗?

    我是 Git 新手 可以说 我有两个 git 存储库 它们添加了相同的库作为子模块 home projects project1 library XYZ home projects project2 library XYZ 另外可以说 我正
  • 如何调整 Quartz 2D 上下文以适应 Retina 显示屏?

    我有一个 Quartz 2D 游戏 它直接绘制到上下文中 因此 我必须调整代码 以便它可以在适合视网膜显示屏的情况下进行缩放 我使用以下代码执行此操作 CGFloat displayScale if UIScreen mainScreen
  • 在 Struts2 中使用 Tuckey URL Rewrite 进行 URL 重写时需要帮助

    我想重写基于 Struts2 的应用程序的 URL 当前在开发环境中 我搜索了它并找到了 Tuckey URL Rewrite 并将其设置在我的项目中 现在我想要我的登录网址http localhost 8080 MyProject loa
  • SparkR的安装

    我有最新版本的 R 3 2 1 现在我想在 R 上安装 SparkR 执行后 gt install packages SparkR 我回来了 Installing package into home user R x86 64 pc lin
  • 将 ECPublicKey 从 JavaCard 恢复到 Java

    我正在尝试在终端 由我的计算机模拟 和智能卡 Java Card 之间实现 ECDH 我修复了我想要使用的椭圆曲线 并且在卡端我有以下代码来运行协议的第一部分 ECPublicKey pubKey ECPublicKey KeyBuilde
  • 当某些原始值相同时反转字典

    假设我有一本字典叫做word counter dictionary计算表单中文档中有多少个单词 word number 例如 第二 一词出现一次 因此键 值对将是 secondly 1 我想制作一个倒排列表 以便数字将成为键 单词将成为这些
  • Python 多处理 - 进程数

    我正在执行下面的代码 它工作正常 但它不会生成到不同的进程 而是有时所有代码都在同一个进程中运行 有时是两个进程合二为一 我使用的是 4 个 cpu 的机器 这段代码有什么问题吗 def f values print multiproces
  • 使用 POI 解析 Excel 但出现异常“无效的标头签名”

    我试图使用 Apache POI 版本 3 6 来解析 Excel xls 文件 但只得到异常 java io IOException Invalid header signature read 0x07B1FD124BEDF108 exp
  • 隐藏 URL 中的参数值 (guid)

    在我的路线中 when user user guid templateUrl users profile html controller userController In my index html内ng repeat I have a
  • 将 ReactiveList 绑定到 ComboBox 找不到视图错误

    我将 ReactiveList 绑定到视图代码隐藏中的 ComboBox 并收到错误System Exception 找不到 Value1 的视图 ViewModel cs public class SourceItem public ov
  • 使用 Include 进行 EF Core 联接,但外键不是另一个表上的主键

    我试图将我的表与另一端的外键和主键关联起来 但现在我将使用外键 它不是所述表的主键 我正在使用 逆性质 但我认为它有一个错误 因为我已经环顾四周几个小时了 而且所有人都说同样的事情 文件表 public class Document Key
  • 为什么我的节点服务器处理请求两次?

    我有以下简单的节点服务器 const http require http http createServer function req resp console log request arrived resp writeHead 200
  • 分离度

    有没有一种方法 有效或无效 来找到给定 facebook 上的两个人 X 和 Y 像这样定义的数字 如果 X 和 Y 是朋友 则 1 否则 如果 X 有一个朋友 而该朋友也是 Y 的朋友 则 2 否则 如果 X 是朋友 Y 的朋友的朋友 则
  • Angular 2 中的 XML 数据解析

    我是 angularjs2 和 typescript 的新手 在我的项目中 我有一个包含 xml 作为字符串的字符串变量 我需要处理该字符串并根据 XML 中的节点访问字符串中的数据 我在谷歌搜索方面遇到了困难 请帮助我出去
  • 在 Spring Boot 中动态更改 application.properties 值

    目前我正在 Spring Boot 中开发一个基于 REST 的项目 我已在 application properties 文件中添加了 api url i e 应用程序属性 api base url http localhost 8080
  • 等k子集算法

    有谁知道相等 k 子集算法的良好且有效的算法吗 最好是 c 或 c 可以处理 100 个元素向量 可能具有复杂性和时间估计 前任 9元向量 x 2 4 5 6 8 9 11 13 14 我需要生成所有 k 3 不相交子集 总和 24 该算法
  • toString() Java 中的泛型类型

    如何打印通用 java 类型的类型 反射 有什么技巧吗 public class Foo
  • OpenSSL 和 OpenMP 的多线程程序段错误

    我在 C 多线程程序中使用 OpenSSL 并遇到问题 所以我写了一个小程序来尝试缩小问题的范围 除了主函数之外的函数都是从https github com plenluno openssl blob master openssl cryp
  • Linux 下 C++ Promise.set_value 失败并出现未知错误

    我正在尝试让我的模拟在我们的高性能服务器上运行 它 不幸的是 使用 CentOS Linux 版本 7 7 1908 核心 而不是我正在开发程序的 Win10 随之而来的是大量错误 其中一个我无法修复 include