<new>
typedef
hardware_constructive_interference_size
inline constexpr size_t hardware_constructive_interference_size = implementation-defined;
备注
这个数字是由并发线程通过临时位置访问的两个对象所占用的连续内存的最大建议大小。 必须至少为 alignof(max_align_t)
。
示例
struct together {
atomic<int> dog;
int puppy;
};
struct kennel {
// Other data members...
alignas(sizeof(together)) together pack;
// Other data members...
};
static_assert(sizeof(together) <= hardware_constructive_interference_size);
hardware_destructive_interference_size
inline constexpr size_t hardware_destructive_interference_size = implementation-defined;
备注
此数字是两个并发访问对象之间的最小建议偏移量,以避免由于实现引入的争用而导致性能下降。 必须至少为 alignof(max_align_t)
。
示例
struct keep_apart {
alignas(hardware_destructive_interference_size) atomic<int> cat;
alignas(hardware_destructive_interference_size) atomic<int> dog;
};
new_handler
new_handler
类型指向一个适合用作 new handler
的函数,该函数可以回收或释放内存。
typedef void (*new_handler)();
注解
当此类型的函数由 std::set_new_handler
设置时,如果 operator new
或 operator new[]
不能满足对更多存储的请求时,就会调用该函数。
示例
有关将 new_handler
用作返回值的示例,请参阅 set_new_handler
。