You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Apple Silicon(M1) Mac上g++使用std::thread与异常的异常问题

问题:Apple Silicon上GCC编译含std::jthread的C++20程序无法捕获异常

我在Apple Silicon(M1) MacBook(系统Sonoma 14.4.1)上尝试使用C20的std::jthread特性,由于Apple clang 15.0.0暂不支持该特性,转而使用Homebrew提供的g++-13(Homebrew GCC 13.2.0)编译代码。但遇到异常行为:程序中抛出的异常无法被捕获,直接导致程序终止——按C多线程编程的常规逻辑,异常只要在抛出线程内被捕获就应该正常处理。

我编写了包含CMakeLists.txt和main.cpp的最小复现示例,分别用两种编译器测试:

  • Apple clang编译的程序可正常捕获异常
  • g++编译的程序中,任何抛出的异常都会直接终止程序

我的具体观察结果:

  • 用g++编译时,所有抛出的异常都会导致程序终止
  • 若类T的析构函数~T()为空实现(无代码),该异常现象消失
  • 若类T不包含std::thread或std::jthread类型的成员,该异常现象消失
  • 若不实例化类T,该异常现象消失
  • 同样的代码在Linux x86平台的g++上编译运行完全正常

想确认:这是我的工具或运行环境配置存在问题,还是g++在Apple Silicon平台上存在已知问题?


内容的提问来源于stack exchange,提问作者Philipp Rosendahl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 09:32:07