Skip to content

Latest commit

 

History

History
69 lines (52 loc) · 3 KB

hardware_constructive_interference_size.md

File metadata and controls

69 lines (52 loc) · 3 KB

hardware_constructive_interference_size

  • new[meta header]
  • std[meta namespace]
  • variable[meta id-type]
  • cpp17[meta cpp]
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;
}
  • std::hardware_constructive_interference_size[color ff0000]
  • threads.push_back[link /reference/vector/vector/push_back.md]

出力例

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

バージョン

言語

  • C++17

処理系

参照