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();
}

is_lock_free((对于某些数据类型是否可以返回true,对于另一种数据类型是否返回false?

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

事实上,如果不是这样的话,那么函数成为模板的成员就没有意义了。

最新更新