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

Parsec基准测试编译报错:WorkerGroup析构函数抛出说明符宽松问题

解决Parsec基准测试编译错误:WorkerGroup析构函数异常规范不匹配

错误原因

这个编译错误是C++虚函数异常规范不兼容导致的:threads::WorkerGroup的析构函数是虚函数,它的基类析构函数明确声明只能抛出threads::CondException和threads::MutexException,但当前代码中~WorkerGroup()的声明没有匹配这个异常范围(默认允许抛出任何异常),违反了C++中派生类虚函数的异常规范不能比基类更宽松的规则。

解决方案

  • 匹配基类异常规范:修改WorkerGroup.h第88行的析构函数声明,加上和基类完全一致的异常限定:

    ~WorkerGroup() throw (threads::CondException, threads::MutexException);
    

    同时保证析构函数的实现代码不会抛出这两个异常之外的其他异常。

  • 改用现代C的noexcept(推荐C11及以上环境):如果基类析构函数实际不会抛出异常,同步修改基类和WorkerGroup的析构函数声明为:

    // 基类中的析构函数声明
    virtual ~BaseWorkerGroup() noexcept;
    // WorkerGroup.h中的析构函数声明
    ~WorkerGroup() noexcept override;
    

    这种写法替代了旧的throw()规范,更符合现代C++标准,也能避免异常规范不匹配的问题。

  • 调整编译选项或编译器版本:如果是Parsec源码本身的问题,可尝试添加-fno-exceptions编译选项禁用异常处理(需确认Parsec支持该模式),或者切换到对旧异常规范兼容性更好的编译器版本(比如GCC 4.x系列)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 03:29:59