Cpp-standard-library-cpp-load

提供:Dev Guides
移動先:案内検索

C ++アトミックライブラリ-ロード

説明

アトミックオブジェクトの値をアトミックに取得します。

宣言

以下は、std
atomic :: loadの宣言です。
T load( std::memory_order order = std::memory_order_seq_cst ) const;

C 11

T load( std::memory_order order = std::memory_order_seq_cst ) const volatile;

パラメーター

*order* -メモリの順序の制約を強制するために使用されます。

戻り値

アトミック変数の現在の値を返します。

例外

*No-noexcept* -このメンバー関数は例外をスローしません。

以下のstd
atomic :: loadの例。
#include <atomic>
#include <thread>

std::atomic<int> foo (0);

void set_foo(int x) {
   foo.store(x,std::memory_order_relaxed);
}

void print_foo() {
   int x;
   do {
      x = foo.load(std::memory_order_relaxed);
   } while (x==0);
   std::cout << "test: " << x << '\n';
}

int main () {
   std::thread first (print_foo);
   std::thread second (set_foo,10);
   first.join();
   second.join();
   return 0;
}