Compartilhar via


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.