Typedef <new>
hardware_constructive_interference_size
inline constexpr size_t hardware_constructive_interference_size = implementation-defined;
Osservazioni:
Questo numero è la dimensione massima consigliata della memoria contigua occupata da due oggetti a cui si accede con località temporali da thread simultanei. Deve essere almeno alignof(max_align_t)
.
Esempio
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;
Osservazioni:
Questo numero è l'offset minimo consigliato tra due oggetti a cui si accede contemporaneamente per evitare una riduzione delle prestazioni a causa della contesa introdotta dall'implementazione. Deve essere almeno alignof(max_align_t)
.
Esempio
struct keep_apart {
alignas(hardware_destructive_interference_size) atomic<int> cat;
alignas(hardware_destructive_interference_size) atomic<int> dog;
};
new_handler
Il new_handler
tipo punta a una funzione adatta per l'uso come new handler
, una funzione che può recuperare o rilasciare memoria.
typedef void (*new_handler)();
Osservazioni:
Quando la funzione di questo tipo viene impostata da std::set_new_handler
, la funzione viene chiamata da operator new
o operator new[]
quando non riesce a soddisfare una richiesta di archiviazione maggiore.
Esempio
Per un esempio che usa new_handler
come valore restituito, vedere set_new_handler
.