Typedefs <new>
hardware_constructive_interference_size
inline constexpr size_t hardware_constructive_interference_size = implementation-defined;
Comentários
Esse número é o tamanho máximo recomendado da memória contígua ocupada por dois objetos acessados com localidade temporal por threads simultâneos. Ele precisa ser pelo menos alignof(max_align_t)
.
Exemplo
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;
Comentários
Esse número é o deslocamento mínimo recomendado entre dois objetos acessados simultaneamente para evitar a degradação do desempenho devido à contenção introduzida pela implementação. Ele precisa ser pelo menos alignof(max_align_t)
.
Exemplo
struct keep_apart {
alignas(hardware_destructive_interference_size) atomic<int> cat;
alignas(hardware_destructive_interference_size) atomic<int> dog;
};
new_handler
O tipo new_handler
aponta para uma função adequada para uso como uma função new handler
, que pode recuperar ou liberar memória.
typedef void (*new_handler)();
Comentários
Quando a função desse tipo é definida por std::set_new_handler
, a função é chamada por operator new
ou operator new[]
quando não consegue atender a uma solicitação de mais armazenamento.
Exemplo
Para obter um exemplo que usa new_handler
como um valor retornado, confira set_new_handler
.