<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 handler
fonction 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
.