is_lock_free<T> gcc 4.7.2 中的 std::atomic 中没有定义?
is_lock_free not defined in std::atomic<T> in gcc 4.7.2?
我遇到这个编译错误
<>之前函数std::atomic::is_lock_free() const: error:未定义引用"__atomic_is_lock_free"之前在linux上使用GCC 4.7.2编译下面的代码。
struct S {
int a;
int b;
};
std::atomic<S> s;
cout << s.is_lock_free() << endl;
原子API在GCC 4.7中不完整:
- 当无锁指令不可用时(无论是通过硬件还是操作系统支持),原子操作将作为函数调用留给库来解析。由于时间限制和一个尚未最终确定的API, GCC 4.7没有提供libatom。这很容易通过遇到以
__atomic_*
开头的不满意的外部符号来确定。
由于GCC 4.7没有附带libatomic
,您需要使用另一个真正支持您想要的功能或提供缺失功能(示例实现)的编译器。
相关文章:
- 如何从 std::atomic 中提取指针 T<T>?
- std::atomic和std::condition_variable wait,notify_*方法之间的区别
- std::memory_order for std::atomic:<T>:wait
- MESI协议和std::atomic-它是否确保所有写入立即对其他线程可见?
- 在 lambda 表达式中使用 std::atomic
- C++std::atomic在程序员级别保证了什么
- 如果在 2 个线程中使用,是否值得将size_t声明为 std::atomic?
- MyType 允许 std::atomic 的确切要求是什么<MyType>?
- 无法将类型"T&"的非常量左值引用绑定到类型"T"的右值 t++ std::atomic<T>
- 在 C++20 之前和之后初始化 std::atomic
- std::atomic 和 std::mutex 的相对性能
- 使用用户定义的类型 UDT 实例化 std::atomic<>。如果 UDT 具有虚函数,则 l 墨水将失败。为什么?
- 简单使用 std::atomic 在两个线程之间共享数据
- Port pthread_cond_broadcast to std::atomic
- std::atomic中的任何内容都是免费等待的
- 对于 CPU 无法原子操作的类型,std::atomic 有什么意义?
- 最接近"std::atomic<std::vector>"是什么?
- 为什么 std::atomic<std::string> 会给出微不足道的可复制错误?
- std::atomic<std::chrono::high_resolution_clock::time_point> 无法编译
- std::atomic<std::string> 是否正常工作?