Определения типов <new>

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.