namespace std {
extern "C"
void
atomic_signal_fence(memory_order order) noexcept; // (1) C++11
extern "C"
constexpr void
atomic_signal_fence(memory_order order) noexcept; // (1) C++26
}
概要
同一スレッド内のシグナルハンドラ実行との間でのみ有効なメモリフェンスを発行する。
効果
この関数は、スレッドと、そのスレッド上で処理されるシグナルハンドラとの間でのみ、その効果が有効である、という点を除いてatomic_thread_fence(order)と同じ効果を持つ。
戻り値
なし
例外
投げない
例
出力
バージョン
言語
- C++11
処理系
- Clang: ??
- GCC: 4.7.0 ✅
- ICC: ??
- Visual C++: 2012 ✅, 2013 ✅
参照
- How to correctly use std::atomic_signal_fence()?
- P3309R3
constexpr atomicandatomic_ref- C++26で
constexprに対応した
- C++26で
- LWG Issue 1480. Atomic fences don't have synchronizes with relation
- C++11で、この関数が確立するものが「に対して同期する関係」ではなく「順序付けの制約」であると修正された。同一スレッド内のシグナルハンドラとの間では、スレッド間の同期関係は生じないため