最終更新日時(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)以上である
  • 実装上、hardware_constructive_interference_sizehardware_destructive_interference_sizeは同値になるはずだが、利用目的によって名前を使い分けるために分かれている

#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;
}

出力例

hardware_constructive_interference_size : 64

バージョン

言語

  • C++17

処理系

参照