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 失败并出现未知错误 的相关文章

  • IdentityServer 4 对它的工作原理感到困惑

    我阅读和观看了很多有关 Identity Server 4 的内容 但我仍然对它有点困惑 因为似乎有很多移动部件 我现在明白这是一个单独的项目 它处理用户身份验证 我仍然不明白的是用户如何注册它 谁存储用户名 密码 我打算进行此设置 Rea
  • 如何在C(Linux)中的while循环中准确地睡眠?

    在 C 代码 Linux 操作系统 中 我需要在 while 循环内准确地休眠 比如说 10000 微秒 1000 次 我尝试过usleep nanosleep select pselect和其他一些方法 但没有成功 一旦大约 50 次 它
  • JNI 将 Char* 2D 数组传递给 JAVA 代码

    我想从 C 代码通过 JNI 层传递以下指针数组 char result MAXTEST MAXRESPONSE 12 12 8 3 29 70 5 2 42 42 在java代码中我写了以下声明 public static native
  • 当一组凭据下的计划任务启动的进程在另一组凭据下运行另一个程序时,Windows 是否有限制

    所以我有一个简单的例子 其中我有应用程序 A 它对用户 X 本地管理员 有一些硬编码的凭据 然后它使用硬编码的绝对路径启动带有这些凭据的应用程序 B A 和 B 以及 dotnet 控制台应用程序 但是它们不与控制台交互 只是将信息写入文件
  • 使用 GCP 的数据存储区时如何区分代码是在模拟器中运行还是在 GKE 中运行

    按照中给出的说明进行操作后 我不确定是否遗漏了任何内容https cloud google com datastore docs tools datastore emulator https cloud google com datasto
  • 对 std::vector 进行排序但忽略某个数字

    我有一个std vector
  • 告诉 Nancy 将枚举序列化为字符串

    Nancy 默认情况下在生成 JSON 响应时将枚举序列化为整数 我需要将枚举序列化为字符串 有一种方法可以通过创建来自定义 Nancy 的 JSON 序列化JavaScript 原始转换器 https github com NancyFx
  • 为什么可以通过ref参数修改readonly字段?

    考虑 class Foo private readonly string value public Foo Bar ref value private void Bar ref string value value hello world
  • 类型约束

    我有以下类层次结构 class Header IEnumerable
  • 识别 Visual Studio 中的重载运算符 (c++)

    有没有办法使用 Visual Studio 快速直观地识别 C 中的重载运算符 在我看来 C 中的一大问题是不知道您正在使用的运算符是否已重载 Visual Studio 或某些第三方工具中是否有某些功能可以自动突出显示重载运算符或对重载运
  • 使用valgrind进行GDB远程调试

    如果我使用远程调试gdb我连接到gdbserver using target remote host 2345 如果我使用 valgrind 和 gdb 调试内存错误 以中断无效内存访问 我会使用 target remote vgdb 启动
  • IQueryable 单元或集成测试

    我有一个 Web api 并且公开了一个端点 如下所示 api 假期 name name 这是 Web api 的控制器 get 方法 public IQueryable
  • 为什么这个二维指针表示法有效,而另一个则无效[重复]

    这个问题在这里已经有答案了 这里我编写了一段代码来打印 3x3 矩阵的对角线值之和 这里我必须将矩阵传递给函数 矩阵被传递给指针数组 代码可以工作 但问题是我必须编写参数的方式如下 int mat 3 以下导致程序崩溃 int mat 3
  • 使 Guid 属性成为线程安全的

    我的一个类有一个 Guid 类型的属性 该属性可以由多个线程同时读写 我的印象是对 Guid 的读取和写入不是原子的 因此我应该锁定它们 我选择这样做 public Guid TestKey get lock testKeyLock ret
  • 打印大型 WPF 用户控件

    我有一个巨大的数据 我想使用 WPF 打印 我发现WPF提供了一个PrintDialog PrintVisual用于打印派生的任何 WPF 控件的方法Visual class PrintVisual只会打印一页 因此我需要缩放控件以适合页面
  • C++ new * char 不为空

    我有一个问题 我在 ASIO 中开发服务器 数据包采用尖头字符 当我创建新字符时 例如char buffer new char 128 我必须手动将其清理为空 By for int i 0 i lt 128 i buffer i 0x00
  • 将数组作为参数传递

    如果我们修改作为方法内参数传递的数组的内容 则修改是在参数的副本而不是原始参数上完成的 因此结果不可见 当我们调用具有引用类型参数的方法时 会发生什么过程 这是我想问的代码示例 using System namespace Value Re
  • 如何在richtextbox中使用多颜色[重复]

    这个问题在这里已经有答案了 我使用 C windows 窗体 并且有 richtextbox 我想将一些文本设置为红色 一些设置为绿色 一些设置为黑色 怎么办呢 附图片 System Windows Forms RichTextBox有一个
  • GCC 的“-Wl,option”和“-Xlinker option”语法之间有区别吗?

    我一直在查看一些配置文件 并且看到它们都被使用 尽管在不同的体系结构上 如果您在 Linux 机器上使用 GCC 将选项传递给链接器的两种语法之间有区别吗 据我所知 阅读 GCC 手册时 他们的解释几乎相同 From man gcc Xli
  • 灵气序列解析问题

    我在使用 Spirit Qi 2 4 编写解析器时遇到一些问题 我有一系列键值对以以下格式解析

随机推荐

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

    我有一个目标列表 每个目标都有另一个 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