In file included from /home/dongjianhong/olt_pizzabox/platform/host/usr/arm-broadcom-linux-uclibcgnueabi/include/c++/4.9.4/atomic:41:0, from /home/dongjianhong/olt_pizzabox/platform/output/DS-P7001-08/build/grpc-1.25.0/src/core/lib/gprpp/ref_counted.h:28, from /home/dongjianhong/olt_pizzabox/platform/output/DS-P7001-08/build/grpc-1.25.0/src/core/lib/channel/channel_trace.h:25, from /home/dongjianhong/olt_pizzabox/platform/output/DS-P7001-08/build/grpc-1.25.0/src/core/lib/channel/channelz_registry.cc:24: /home/dongjianhong/olt_pizzabox/platform/host/usr/arm-broadcom-linux-uclibcgnueabi/include/c++/4.9.4/bits/atomic_base.h: In member function ‘bool grpc_core::Atomic<T>::IncrementIfNonzero(grpc_core::MemoryOrder) [with T = int]’: /home/dongjianhong/olt_pizzabox/platform/host/usr/arm-broadcom-linux-uclibcgnueabi/include/c++/4.9.4/bits/atomic_base.h:538:70: error: failure memory model cannot be stronger than success memory model for ‘__atomic_compare_exchange’ return __atomic_compare_exchange_n(&_M_i, &__i1, __i2, 1, __m1, __m2);
时间: 2023-08-02 09:06:06 浏览: 167
这个错误是由于在`grpc_core::Atomic<T>::IncrementIfNonzero`函数中使用了比成功内存模型更强的内存模型来执行`__atomic_compare_exchange`函数引起的。
根据错误信息,`IncrementIfNonzero`函数定义在`grpc_core::Atomic<T>`类中,它尝试使用`__atomic_compare_exchange`函数来实现一个原子的增量操作。然而,这个错误指出所使用的内存模型不符合要求。
为了解决这个错误,你需要检查`IncrementIfNonzero`函数中对`__atomic_compare_exchange`函数的调用,并确保所使用的内存模型不会超过成功内存模型。
可能的解决方法包括:
- 检查代码中是否有其他地方修改了默认的内存模型设置。确保所有相关代码都使用相同的内存模型。
- 如果需要更强的内存模型,可以考虑修改`IncrementIfNonzero`函数的实现,或者使用其他适合的原子操作函数来替代`__atomic_compare_exchange`。
- 如果不需要使用原子操作,可以考虑使用非原子操作来实现相同的逻辑。
请注意,在修改代码之前,请确保你了解并理解所做的更改可能产生的影响,并进行必要的测试和验证。
阅读全文