Definiciones de tipo de <new>
hardware_constructive_interference_size
inline constexpr size_t hardware_constructive_interference_size = implementation-defined;
Comentarios
Este número es el tamaño máximo recomendado de memoria contigua ocupada por dos objetos a los que se accede con localidad temporal por subprocesos simultáneos. Debe ser alignof(max_align_t)
como mínimo.
Ejemplo
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;
Comentarios
Este número es el desplazamiento mínimo recomendado entre dos objetos a los que se accede simultáneamente para evitar la degradación del rendimiento debido a la contención introducida por la implementación. Debe ser alignof(max_align_t)
como mínimo.
Ejemplo
struct keep_apart {
alignas(hardware_destructive_interference_size) atomic<int> cat;
alignas(hardware_destructive_interference_size) atomic<int> dog;
};
new_handler
El new_handler
apunta a una función adecuada para su uso como new handler
, una función que puede reclamar o liberar memoria.
typedef void (*new_handler)();
Comentarios
Cuando la función de este tipo se establece mediante std::set_new_handler
, llama a operator new
la función o operator new[]
cuando no puede satisfacer una solicitud de más almacenamiento.
Ejemplo
Para obtener un ejemplo que usa new_handler
como valor devuelto, vea set_new_handler
.