Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Определения типов
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.