首页 > 解决方案 > is_lock_free() 可以为某些数据类型返回 true 并为另一种数据类型返回 false 吗?

问题描述

我知道这is_lock_free取决于硬件,但是当我在 ADT 上使用它时,它返回 false 但int类型为 true。这怎么可能?

#include <iostream>
#include <atomic>
struct myType {

    size_t ID{};
    size_t to{};
};
int main() {


    std::atomic<myType> i{ };
    std::cout << "\n" << i.is_lock_free();

    std::atomic j { 1};
    std::cout << "\n" << j.is_lock_free();

}

标签: c++multithreadingc++17atomic

解决方案


is_lock_free() 可以为某些数据类型返回 true 并为另一种数据类型返回 false 吗?

是的,它可以。显示的程序可以输出 0 1。

事实上,如果不是这种情况,那么函数就没有必要成为模板的成员了。


推荐阅读