我知道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。
事实上,如果不是这样的话,那么函数成为模板的成员就没有意义了。