最終更新日時(UTC):
が更新

履歴 編集

variable
<new>

std::hardware_constructive_interference_size(C++17)

namespace std {
  inline constexpr std::size_t hardware_constructive_interference_size = implementation-defined;
}

概要

2つのオブジェクトに一時局所的にアクセスできる最大サイズ。

この変数と対になるhardware_destructive_interference_sizeは、各変数がそれぞれ別なキャッシュラインに乗るようアライメントを調整するものだが、この変数は、複数の変数を意図的に同じキャッシュラインに乗せるためのアライメントサイズである。

備考

  • この変数の値は、alignof(max_align_t)以上である

#include <iostream>
#include <new>

struct X {
  int a;
  int b;
};

// Xクラスのメンバ変数aとbが、同じキャッシュラインに乗ることを意図する
static_assert(sizeof(X) <= std::hardware_constructive_interference_size);

int main()
{
  std::cout << "hardware_constructive_interference_size : "
            << std::hardware_constructive_interference_size
            << std::endl;
}

出力例

(実装がないため、動作確認できていない)

バージョン

言語

  • C++17

処理系

参照