<new> typedefs

hardware_constructive_interference_size

inline constexpr size_t hardware_constructive_interference_size = implementation-defined;

注釈

この数は、同時実行スレッドによって一時的な局所性でアクセスされる 2 つのオブジェクトによって占有される連続するメモリの最大推奨サイズです。 少なくとも alignof(max_align_t)必要です。

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;

注釈

この数は、実装によって発生する競合によるパフォーマンスの低下を回避するために、同時にアクセスされた 2 つのオブジェクト間の最小推奨オフセットです。 少なくとも alignof(max_align_t)必要です。

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

new_handler

型は new_handler 、メモリを再利用または解放できる関数として new handler使用するのに適した関数を指します。

typedef void (*new_handler)();

注釈

この型の関数が設定されているstd::set_new_handler場合、より多くのストレージの要求を満たさない場合にoperator new[]関数が呼び出operator newされます。

戻り値として使用 new_handler する例については、次を参照してください set_new_handler