Condividi tramite


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.