<new>, typedefs

hardware_constructive_interference_size

inline constexpr size_t hardware_constructive_interference_size = implementation-defined;

Notes

Ce nombre est la taille maximale recommandée de la mémoire contiguë occupée par deux objets accessibles avec une localité temporelle par des threads simultanés. Il doit être au moins alignof(max_align_t).

Exemple

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;

Notes

Ce nombre est le décalage minimal recommandé entre deux objets accessibles simultanément pour éviter la dégradation des performances en raison de la contention introduite par l’implémentation. Il doit être au moins alignof(max_align_t).

Exemple

struct keep_apart {
    alignas(hardware_destructive_interference_size) atomic<int> cat;
    alignas(hardware_destructive_interference_size) atomic<int> dog;
};

new_handler

Le new_handler type pointe vers une fonction appropriée pour une utilisation en tant que new handlerfonction qui peut récupérer ou libérer de la mémoire.

typedef void (*new_handler)();

Notes

Quand la fonction de ce type est définie par std::set_new_handler, la fonction est appelée par operator new ou operator new[] lorsqu’elle ne peut pas satisfaire une demande de stockage supplémentaire.

Exemple

Pour obtenir un exemple qui utilise new_handler comme valeur de retour, consultez set_new_handler.