namespace std {
hazard_pointer make_hazard_pointer();
}
概要
新しいハザードポインタを構築し、それを所有するhazard_pointerオブジェクトを返す。
効果
ハザードポインタを構築する。
戻り値
新しく構築したハザードポインタを所有するhazard_pointerオブジェクト。
例外
ハザードポインタ用のメモリを確保できなかった場合、std::bad_allocを送出する可能性がある。
例
#include <hazard_pointer>
#include <atomic>
#include <print>
struct Data : std::hazard_pointer_obj_base<Data> {
int value;
explicit Data(int v) : value(v) {}
};
std::atomic<Data*> data{new Data(7)};
int main()
{
// ハザードポインタを構築する
std::hazard_pointer h = std::make_hazard_pointer();
Data* p = h.protect(data);
std::println("{}", p->value);
// 後始末: 共有データが指すオブジェクトを回収予約する
data.load()->retire();
}
出力
7
バージョン
言語
- C++26
処理系
- Clang: ??
- GCC: ??
- ICC: ??
- Visual C++: ??