<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
を参照してください。