Udostępnij za pośrednictwem


<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 handlerfunkcję , która może odzyskać lub zwolnić pamięć.

typedef void (*new_handler)();

Uwagi

Gdy funkcja tego typu jest ustawiana przez std::set_new_handlerelement , 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.