<new>
, definicje typów
hardware_constructive_interference_size
inline constexpr size_t hardware_constructive_interference_size = implementation-defined;
Uwagi
Ta liczba jest maksymalnym zalecanym rozmiarem ciągłej pamięci zajmowanej przez dwa obiekty dostępne z lokalnością czasową przez równoczesne wątki. Musi to być co najmniej alignof(max_align_t)
.
Przykład
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;
Uwagi
Ta liczba jest minimalnym zalecanym przesunięciem między dwoma współbieżnymi obiektami, aby uniknąć obniżenia wydajności z powodu rywalizacji wprowadzonej przez implementację. Musi to być co najmniej alignof(max_align_t)
.
Przykład
struct keep_apart {
alignas(hardware_destructive_interference_size) atomic<int> cat;
alignas(hardware_destructive_interference_size) atomic<int> dog;
};
new_handler
Typ new_handler
wskazuje funkcję odpowiednią do użycia jako new handler
funkcję , która może odzyskać lub zwolnić pamięć.
typedef void (*new_handler)();
Uwagi
Gdy funkcja tego typu jest ustawiana przez std::set_new_handler
element , funkcja jest wywoływana przez operator new
program lub operator new[]
gdy nie może spełnić żądania większej ilości miejsca do magazynowania.
Przykład
Przykład, który używa new_handler
jako wartości zwracanej, zobacz set_new_handler
.