GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • cpprefjp - C++日本語リファレンス
  • GitHub Project

This view

  • Original page
  • New address

GeezerVison is showing cpprefjp.github.io — atomic - cpprefjp C++日本語リファレンス

  1. リファレンス
  2. atomic

最終更新日時: 2026年08月26日 16時19分11秒 (JST)
Akira Takahashi が更新

履歴 編集

<atomic>

atomic(C++11)

<atomic>ヘッダでは、アトミック操作(atomic operation : 不可分操作とも呼ばれる)のライブラリを提供する。

アトミック操作は、スレッド間でデータをやり取りするための最も基本的な同期プリミティブであり、 変数への不可分(atomic)な読み込みや書き込み、および読み書きを同時に行う操作(Read-Modify-Write operation)を提供する。

フリースタンディング

このヘッダのほとんどの機能は、フリースタンディング処理系でも使用できる。ただし、例外を送出する一部の機能などは、フリースタンディング処理系では提供されない、または削除される。詳細は各機能のページを参照。 フリースタンディング環境の場合、常にロックフリーな整数アトミック型のサポート、atomic_signed_lock_freeやatomic_unsigned_lock_freeの提供可否は処理系定義となる。

順序と一貫性

名前 説明 対応バージョン
memory_order メモリオーダーの種類(enum) C++11
kill_dependency データ依存性を切る(function template) C++11

ロックフリープロパティ

名前 説明 対応バージョン
ATOMIC_BOOL_LOCK_FREE atomic<bool>に対する操作がロックフリーかを調べる(define) C++11
ATOMIC_CHAR_LOCK_FREE atomic<char>に対する操作がロックフリーかを調べる(define) C++11
ATOMIC_CHAR8_T_LOCK_FREE atomic<char8_t>に対する操作がロックフリーかを調べる(define) C++20
ATOMIC_CHAR16_T_LOCK_FREE atomic<char16_t>に対する操作がロックフリーかを調べる(define) C++11
ATOMIC_CHAR32_T_LOCK_FREE atomic<char32_t>に対する操作がロックフリーかを調べる(define) C++11
ATOMIC_WCHAR_T_LOCK_FREE atomic<wchar_t>に対する操作がロックフリーかを調べる(define) C++11
ATOMIC_SHORT_LOCK_FREE atomic<short>に対する操作がロックフリーかを調べる(define) C++11
ATOMIC_INT_LOCK_FREE atomic<int>に対する操作がロックフリーかを調べる(define) C++11
ATOMIC_LONG_LOCK_FREE atomic<long>に対する操作がロックフリーかを調べる(define) C++11
ATOMIC_LLONG_LOCK_FREE atomic<long long>に対する操作がロックフリーかを調べる(define) C++11
ATOMIC_POINTER_LOCK_FREE atomic<T*>に対する操作がロックフリーかを調べる(define) C++11

汎用型

名前 説明 対応バージョン
atomic_ref 参照したオブジェクトに対してアトミック操作を適用する型(class template) C++20
atomic アトミック型(class template) C++11

アトミック型に対する一般的な操作

名前 説明 対応バージョン
atomic_is_lock_free 指定されたオブジェクトがロックフリーに振る舞うことができるかを調べる(function template) C++11
atomic_init 初期化(function template) C++11
C++20から非推奨
atomic_store 値を書き込む(function template) C++11
atomic_store_explicit メモリオーダーを指定して値を書き込む(function template) C++11
atomic_load 値を読み込む(function template) C++11
atomic_load_explicit メモリオーダーを指定して値を読み込む(function template) C++11
atomic_exchange 値を入れ替える(function template) C++11
atomic_exchange_explicit メモリオーダーを指定して値を入れ替える(function template) C++11
atomic_compare_exchange_weak 弱い比較で値の入れ替えを行う(function template) C++11
atomic_compare_exchange_strong 強い比較で値の入れ替えを行う(function template) C++11
atomic_compare_exchange_weak_explicit 弱い比較でメモリオーダーを指定して値の入れ替えを行う(function template) C++11
atomic_compare_exchange_strong_explicit 強い比較でメモリオーダーを指定して値の入れ替えを行う(function template) C++11

アトミック型に対する算術操作

値を読み込んで算術操作

名前 説明 対応バージョン
atomic_fetch_add 加算(function template) C++11
atomic_fetch_add_explicit メモリオーダーを指定して加算(function template) C++11
atomic_fetch_sub 減算(function template) C++11
atomic_fetch_sub_explicit メモリオーダーを指定して減算(function template) C++11
atomic_fetch_and AND演算(function template) C++11
atomic_fetch_and_explicit メモリオーダーを指定してAND演算(function template) C++11
atomic_fetch_or OR演算(function template) C++11
atomic_fetch_or_explicit メモリオーダーを指定してOR演算(function template) C++11
atomic_fetch_xor XOR演算(function template) C++11
atomic_fetch_xor_explicit メモリオーダーを指定してXOR演算(function template) C++11
atomic_fetch_max 最大値を設定・取得(function template) C++26
atomic_fetch_max_explicit メモリオーダーを指定して最大値を設定・取得(function template) C++26
atomic_fetch_min 最小値を設定・取得(function template) C++26
atomic_fetch_min_explicit メモリオーダーを指定して最小値を設定・取得(function template) C++26

値を読み込まずに算術操作

名前 説明 対応バージョン
atomic_store_add 値を読み込まずに加算(function template) C++26
atomic_store_add_explicit メモリオーダーを指定して値を読み込まずに加算(function template) C++26
atomic_store_sub 値を読み込まずに減算(function template) C++26
atomic_store_sub_explicit メモリオーダーを指定して値を読み込まずに減算(function template) C++26
atomic_store_and 値を読み込まずにAND演算(function template) C++26
atomic_store_and_explicit メモリオーダーを指定して値を読み込まずにAND演算(function template) C++26
atomic_store_or 値を読み込まずにOR演算(function template) C++26
atomic_store_or_explicit メモリオーダーを指定して値を読み込まずにOR演算(function template) C++26
atomic_store_xor 値を読み込まずにXOR演算(function template) C++26
atomic_store_xor_explicit メモリオーダーを指定して値を読み込まずにXOR演算(function template) C++26
atomic_store_max 値を読み込まずに最大値を設定(function template) C++26
atomic_store_max_explicit メモリオーダーを指定して値を読み込まずに最大値を設定(function template) C++26
atomic_store_min 値を読み込まずに最小値を設定(function template) C++26
atomic_store_min_explicit メモリオーダーを指定して値を読み込まずに最小値を設定(function template) C++26

アトミック型に対するブロッキング同期操作

名前 説明 対応バージョン
atomic_wait 起床されるまで待機する (function template ) C++20
atomic_wait_explicit メモリオーダーを指定して起床されるまで待機する (function template ) C++20
atomic_notify_one 待機しているスレッドをひとつ起床させる (function template) C++20
atomic_notify_all 待機している全てのスレッドを起床させる (function template) C++20

初期化

名前 説明 対応バージョン
ATOMIC_VAR_INIT アトミック変数の初期化(define) C++11
C++20から非推奨

フラグ型とその操作

名前 説明 対応バージョン
atomic_flag フラグ用アトミック型(class) C++11
atomic_flag_test 現在の値をbool値として取得する (function) C++20
atomic_flag_test_explicit メモリオーダーを指定して現在の値をbool値として取得する (function) C++20
atomic_flag_test_and_set フラグを立てる(function) C++11
atomic_flag_test_and_set_explicit メモリオーダーを指定してフラグを立てる(function) C++11
atomic_flag_clear フラグをクリアする(function) C++11
atomic_flag_clear_explicit メモリオーダーを指定してフラグをクリアする(function) C++11
atomic_flag_wait 起床されるまで待機する (function) C++20
atomic_flag_wait_explicit メモリオーダーを指定して起床されるまで待機する (function) C++20
atomic_flag_notify_one 待機しているスレッドをひとつ起床させる (function) C++20
atomic_flag_notify_all 待機している全てのスレッドを起床させる (function) C++20
ATOMIC_FLAG_INIT フラグ変数の初期化(define) C++11

フェンス

名前 説明 対応バージョン
atomic_thread_fence スレッド間で有効なフェンスを設定する(function) C++11
atomic_signal_fence スレッドと、そのスレッド上で処理されるシグナルハンドラとの間でのみ有効なフェンスを設定する(function) C++11

バージョン

言語

  • C++11

関連項目

  • <stdatomic.h>

参照

  • N2047 An Atomic Operations Library for C++
  • N2427 C++ Atomic Types and Operations
  • Boost Atomic Library
  • P1642R11 Freestanding Library: Easy [utilities], [ranges], and [iterators]
    • C++23で、フリースタンディング処理系での<atomic>の要件が、フリースタンディングエンティティの仕組みに基づいて整理された
  • LWG Issue 943. ssize_t undefined
    • C++11で、標準のtypedefに対するアトミック型の一覧からatomic_ssize_tが削除された。ssize_tはPOSIXの型であり、C++の標準ライブラリでは定義されていないため
  • LWG Issue 1360. Add <atomic> to free-standing implementations
    • C++11で、このヘッダがフリースタンディング処理系でも提供されることが規定された
  • LWG Issue 3814. Add freestanding items requested by NB comments
    • C++23で、memory_orderの各定数などがフリースタンディング処理系で使用可能であることが追加で規定された
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.